matlab zeros和size的用法

新手求解答,谢谢。
function [Amix, Bmix, Amix2] = calcabmix(comp, A, B, BIP)
ncomp = size(comp,1);
% Calculate
Aij = zeros(ncomp, ncomp); 这里为什么要用zeros?
for i = 1:ncomp
for j = 1:ncomp
Aij(i,j) = sqrt(A(i)*A(j))*(1 - BIP(i,j));
end
end

% Amix and Bmix are scalars.
Amix = comp'*Aij*comp; 这里为啥要转置啊?
Bmix = comp'*B;
% Amix2 is a vector.
Amix2 = Aij*comp;

end

1、Aij = zeros(ncomp, ncomp); 这里为什么要用zeros?
目的是预分配矩阵内存。这里需要将Aij初始化为一个ncomp行ncomp列的矩阵,所以就用zeros将其全部元素设为0了,下一行循环计算中再将每个元素设置为需要的值。当然你也可以用ones()将其全部设置为1。

size()函数用于获取矩阵的行、列数,ncomp = size(comp,1);中表示获取comp的行数,同理ncomp = size(comp,2);位获取列数。

2、Amix = comp'*Aij*comp; 这里为啥要转置啊?
这个不是程序的问题,转置与否取决于你的数学问题。
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答