Matlab 如何计算两个变量的和?

Matlab 如何计算两个变量的和?,matlab,Matlab,我试图用两个变量来表示函数,例如: 其中,S(i,j)是一个矩阵,j=1:100,i=1:50 分母部分很简单 for j=1:100 M(j,1) = sum(S(j,:)); end 我的问题是:当我试图在循环中包含I并获得M(I)时,我感到困惑。首先,在matlab中,你不需要循环来获得分母的和 sum()可以获取希望作为第二个输入参数求和的维度。其次,为了得到另一个表达式,您只需为矩阵中的乘法创建一个临时矩阵,然后按元素进行乘法。我们称之为J: J = repmat(1:50

我试图用两个变量来表示函数,例如:

其中,
S(i,j)
是一个矩阵,
j=1:100
i=1:50

分母部分很简单

for j=1:100
    M(j,1) = sum(S(j,:));
end

我的问题是:当我试图在循环中包含
I
并获得
M(I)
时,我感到困惑。首先,在matlab中,你不需要循环来获得分母的和

sum()
可以获取希望作为第二个输入参数求和的维度。其次,为了得到另一个表达式,您只需为矩阵中的乘法创建一个临时矩阵,然后按元素进行乘法。我们称之为J:

J = repmat(1:50,[100 1]);

M = sum(J.*S,2)./sum(S,2);
当然,您可以保存内存,而不是将J保存到内存:

M = sum(repmat(1:50,[100 1]).*S,2)./sum(S,2);

只是一个小小的建议:尽量不要使用Matlab中的变量i和j来引用索引或其他东西。它们是为复数的虚部保留的。请参阅:考虑使用<代码> BSXFung,而不是<代码> RePATAT < /代码>。代码>M=sum(bsxfun(@times,(1:50),S),2)。/sum(S,2)
bsxfun
的性能优于基于
repmat
的方法: