Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab中for循环的正确使用_Matlab - Fatal编程技术网

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;