Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.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
使用“创建数字”;For loop";利用matlab/octave_Matlab_For Loop_Octave_Numerical Methods - Fatal编程技术网

使用“创建数字”;For loop";利用matlab/octave

使用“创建数字”;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)

我试图在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)
    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));