MATLAB用给定的向量减去矩阵的每一行

MATLAB用给定的向量减去矩阵的每一行,matlab,matrix,subtraction,Matlab,Matrix,Subtraction,让 及 我想从M的每一行中减去V,使M看起来像 V = | 1 1 1 | 我如何在不使用for的情况下做到这一点,有没有直接的命令 M = | 0 1 2 | | 3 4 5 | | 6 7 8 | 对repmat的调用按M中的行数重复向量V 用户指出,在最新版本的MATLAB中,一种更简单(尽管有点晦涩)的语法起作用。如果从矩阵中减去一个向量,只要向量的一个维度与矩阵维度匹配,MATLAB就会扩展该向量以匹配矩阵的大小。看 当然,如果您知道V将包含所有1,那么解决方案就更

我想从M的每一行中减去V,使M看起来像

V = | 1 1 1 |
我如何在不使用for的情况下做到这一点,有没有直接的命令

M = | 0 1 2 |
    | 3 4 5 |
    | 6 7 8 |
对repmat的调用按M中的行数重复向量V

用户指出,在最新版本的MATLAB中,一种更简单(尽管有点晦涩)的语法起作用。如果从矩阵中减去一个向量,只要向量的一个维度与矩阵维度匹配,MATLAB就会扩展该向量以匹配矩阵的大小。看

当然,如果您知道V将包含所有1,那么解决方案就更简单了:

>> M-V

ans =

     0     1     2
     3     4     5
     6     7     8
您还可以使用bsxfun


对于当前版本的MATLAB,
M-V
也可以使用。谢谢,@bicker。我编辑了回复以包含您的输入。
>> M = [1 2 3; 4 5 6; 7 8 9];
>> V = [1 1 1];
>> MV = M-repmat(V,size(M,1),1)

MV =

     0     1     2
     3     4     5
     6     7     8
>> M-V

ans =

     0     1     2
     3     4     5
     6     7     8
>> MV = M-1

MV =

     0     1     2
     3     4     5
     6     7     8
M = [1 2 3 ; 4 5 6 ; 7 8 9] ;
V = [1 1 1] ;
iwant = bsxfun(@minus,M,V)