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

标签 matlab memory subtraction

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/

相关文章:

1000 - 0110 的二进制减法借用逻辑?

arrays - matlab中如何给图像赋值

matlab - 了解非齐次泊松过程 Matlab 代码

matlab - 我们如何在 MATLAB 中找到 gamma 分布的百分位数或分位数?

javascript - Canvas 甚至 Img 吃 RAM 和 CPU

objective-c - 在 Swift 中删除 NSData 内容

algorithm - 了解减法算法

matlab - 使用多变量多项式的特征映射

c - 将文本存储在 C 中的字符矩阵中

java - 在 Java 中对字符进行求和和相减,并且始终得到 ASCII 范围内的结果