Matlab:通过迭代方法连续减去单个矩阵中的行

时间:2011-11-05 00:14:17

标签: arrays matlab iteration operation

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

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

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

在每个循环之后保存新矩阵的输出,其中包含与循环相对应的名称,对于difference1名称,可以是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

1 个答案:

答案 0 :(得分:0)

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

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