gpt4 book ai didi

Matlab - 从[MxN]矩阵元素中快速减去[1xN]数组

转载 作者:IT王子 更新时间:2023-10-28 23:35:01 25 4
gpt4 key购买 nike

Possible Duplicates:
How to subtract a vector from each row of a matrix?
How can I divide each row of a matrix by a fixed row?

我有 M 行 4 列的矩阵 (M1)。我有另一个 1 行 4 列的数组(M2)。我想用 M2 中的相应列元素减去 M1 中的每个元素。换句话说,M1 的每一列都需要被 M2 中相同列位置的标量减去。我可以调用 repmat(M2,M,1),它会创建一个大小为 MxN 的 NEW 矩阵,其中列中的每个元素都是相同的,然后逐个元素地进行减法:

M2new = repmat(M2,M,1)
final = M1 - M2new

但是,这是两行代码,并在内存中创建了一个新元素。执行此操作的最快且内存占用最少的方式是什么?

最佳答案

使用 bsxfun就像下面的例子一样。

x=magic(4);
y=x(1,:);
z=bsxfun(@minus,x,y)

z =

0 0 0 0
-11 9 7 -5
-7 5 3 -1
-12 12 12 -12

这里的z是每行减去第一行得到的。只需将 x 替换为您的矩阵,将 y 替换为您的行向量,就可以了。

关于Matlab - 从[MxN]矩阵元素中快速减去[1xN]数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5967940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com