0

让我们假设有一个矩阵 [mXn]。例如:a=[2 9; 5 7; 8 25; 1 6; 3 9]。

我想知道如何从第二行中减去第一行,依此类推,直到两行之间的差为 1。

接下来从第三行减去第一行,依此类推,差值为 2。

并且在每个循环之后,使用与循环相应的名称保存新矩阵的输出,例如,diff1 名称可能是 newMatDif_1 等等。

diff1----5-2 7-9; 8-2 25-9; .......newMatDiff_1  
diff2----8-2 25-9; 3-8  9-25;.......newMatDiff_2    
diff3----1-2 6-9; .......newMatDiff_3
4

1 回答 1

0

您的命名方案在 MATLAB 中并不真正可行或有用,因此我使用了一个 3 维数组来保存差异。此操作的关键是旋转数组的行,为此我定义了一个函数:

rotate_rows = @(A, n) ( [ A((n+1):end,:); A(1:n,:)]);

for r = 1:rows(A)-1
    diffs(:,:,r) = a - rotate_rows(a,r);
end
于 2011-11-05T01:11:15.860 回答