Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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语句放入一个语句中。差不多 A = [ 0 0 0 5 0 2 0 0 1 3 0 0 0 0 4 0]; a=size(A); b=size(A); ind=0; c=0; for ({i=1:a},{j=1:b}) end 没有 读这个 我也看不到任何附加值,即使这是可能的不,我认为你不能在一行中放置两个for循环 根据您的操作,您可以对其进行整形,并将其用于循环。如

可以将两个for语句放入一个语句中。差不多

A = [ 0   0   0   5
      0   2   0   0
      1   3   0   0
      0   0   4   0];
  a=size(A);
  b=size(A);
  ind=0;
  c=0;
  for ({i=1:a},{j=1:b})
  end
没有

读这个
我也看不到任何附加值,即使这是可能的

不,我认为你不能在一行中放置两个for循环

根据您的操作,您可以对其进行整形,并将其用于循环。如果您正在做一些简单的事情,比如打印所有元素

B = reshape(A,a*b,1);
for i=1:a*b
    c = B(i);
    ...
end

你的问题非常广泛,但有一点需要考虑的是,在Matlab中,你可以经常利用线性索引(而不是下标),而实际上不需要<代码>改写数组。比如说,

>> A = [ 0   0   0   5
         0   2   0   0
         1   3   0   0
         0   0   4   0];
>> A(3,2)
ans =
     3
>> A(7) % A(3+(2-1)*size(A,1))
ans =
     3
在所有元素的
for
循环中,您通常可以利用这一点:

for ii=1:numel(A),
   A(ii) = A(ii) + 1; % or something more useful
end
同:

for ii=1:size(A,2),
    for jj=1:size(A,1),
        A(jj,ii) = A(jj,ii) + 1;
    end
end

但是,为了解决这个问题中的具体目标,正如您在评论中所述(“我将非零元素存储在另一个矩阵中;使用索引号、值、行号和列号等元素”),制作稀疏矩阵表示法的目的是:

>> [i,j,s] = find(A);
>> [m,n] = size(A);
>> S = sparse(i,j,s,m,n)
S =
   (3,1)        1
   (2,2)        2
   (3,2)        3
   (4,3)        4
   (1,4)        5

但这与更广泛的问题并不相关。

实际上,对于,您可以将多个循环组合成一个
,但是这需要您在包含所有元素而不是单个元素的向量上循环

以下是一种方法:

iRange = 1:2;
jRange = 1:3;
[iL jL] = ndgrid(iRange,jRange);
ijRange = [iL(:) jL(:)]';
for ij = ijRange
    i = ij(1); j = ij(2);
end

请注意,在变量上循环可能更简单,但这种方法也可能有一些优点。

简短回答:否。长回答:取决于操作。你的
循环中有什么?不知道你在要求什么。你想迭代矩阵中的每个元素吗?我将非零元素存储在另一个矩阵中;对于索引号、值、行号和列号等元素,代码通常如下所示:对于i=1:a对于j=1:b body end,我的问题是我是否可以使用一个for语句而不是两个for语句。我假设使用多个循环有一些方法,主要问题是您希望通过它实现什么。如果您只需要更少的行,可以将两个
for
命令放在一行中,用逗号分隔。这同样适用于两个
end
命令。