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

发布于 2024-12-14 07:41:11 字数 354 浏览 0 评论 0原文

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

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

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

每次循环后保存输出具有与循环相关的名称的新矩阵的名称可以是 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

Let us assume there is a matrix [mXn]. for example: a=[2 9; 5 7; 8 25; 1 6; 3 9].

I would like to know how to subtract 1st row from 2nd row and so on till end where the difference between two row is 1.

Next subtract first row from 3rd row and so on where the difference is 2.

And after each loop save the output of the new matrix with a name respective to the loop say for difference1 name may be as newMatDif_1 and so one.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

懒猫 2024-12-21 07:41:11

您的命名方案在 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

Your naming scheme is not really feasible or useful in MATLAB, so I've used a 3-dimensional array to hold the differences. The key to this operation is rotating the rows of the array, for which I've defined a function:

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文