使用“创建数字”;For loop";利用matlab/octave
我试图在matlab/octave中使用For循环来循环一个数字模式 我要找的模式是 40,80160320280200然后将1添加到每个中,因此模式如下所示:使用“创建数字”;For loop";利用matlab/octave,matlab,for-loop,octave,numerical-methods,Matlab,For Loop,Octave,Numerical Methods,我试图在matlab/octave中使用For循环来循环一个数字模式 我要找的模式是 40,80160320280200然后将1添加到每个中,因此模式如下所示: 40,80,160,320,280,200,41,81,161,321,281,201,42,82,162,322,282,202 我尝试使用下面的for循环 clear all numL_tmp=[40;80;160;320;280;200] numL=[numL_tmp]; for ii=1:length(numL_tmp)
40,80,160,320,280,200,41,81,161,321,281,201,42,82,162,322,282,202
我尝试使用下面的for循环
clear all
numL_tmp=[40;80;160;320;280;200]
numL=[numL_tmp];
for ii=1:length(numL_tmp)
for jj=1:4
numL=[numL;numL_tmp(ii,1)+jj]
end
end
但我明白了
40,80,160,320,280,200,41,42,81,82,161,162,321,322,281,282,201,202
如何解决此问题?对于所述问题,嵌套循环是不必要的。您可以简单地执行以下操作:
clear all;
numL_tmp=[40;80;160;320;280;200];
numL = numL_tmp;
for ii=1:2
numL = [numL;numL_tmp+ii];
end
numL
这将产生:
numL =
40
80
160
320
280
200
41
81
161
321
281
201
42
82
162
322
282
202
这是因为MATLAB将代码
numL\u tmp+ii
识别为等同于numL\u tmp+ii*one(size(numL\u tmp))
有更简单的方法,但代码的根本问题是内部和外部循环顺序错误。看看如果代码保持原样,只需交换两个循环的顺序就会发生什么:
...
numL=[numL_tmp];
for jj=1:4
for ii=1:length(numL_tmp)
numL=[numL;numL_tmp(ii,1)+jj]
end
end
您可以完全避免循环:
N = 3;
numL = kron(ones(N,1),numL_tmp) + kron((0:N-1)',ones(numel(numL_tmp),1));