Matlab中for循环的正确使用
我得到以下输出:Matlab中for循环的正确使用,matlab,Matlab,我得到以下输出: for ii=1:size(K) Xsol(ii) = (K(ii) - average/2) ; Xsag(ii) = (K(ii) + average/2) ; end 但是它可能是这样的Xsol(1)和Xsol(2)。我怎么能得到这个呢?如果K是一个1xn矩阵,那么size(K)将产生[1n]。当您将它用于循环时,它不起作用,因为它不是标量(实际上,非常痛苦的是,Matlab只是使用第一个元素来限制循环,甚至不发出警告)。相反,写下: Xsol =
for ii=1:size(K)
Xsol(ii) = (K(ii) - average/2) ;
Xsag(ii) = (K(ii) + average/2) ;
end
但是它可能是这样的
Xsol(1)
和Xsol(2)
。我怎么能得到这个呢?如果K
是一个1xn矩阵,那么size(K)
将产生[1n]
。当您将它用于循环时,它不起作用,因为它不是标量(实际上,非常痛苦的是,Matlab只是使用第一个元素来限制循环,甚至不发出警告)。相反,写下:
Xsol =
5.5000
Xsag =
36.5000
函数numel
返回一个标量,即元素总数
然而,正如@Jonas所指出的,在这种情况下不需要循环。通常,与数组操作相比,循环速度非常慢。您也可以调用
for ii=1:numel(K)
Xsol(ii) = (K(ii) - average/2) ;
Xsag(ii) = (K(ii) + average/2) ;
end
这就是问题的解决方案(尽管循环是不必要的)+1.@Jonas:是的,确实不需要循环:P
Xsol = K - average/2;
Xsag = K + average/2;