两个循环中向量的乘法

时间:2014-07-22 08:07:14

标签: matlab for-loop vector matrix multiplication

我想将两个向量相乘以产生一个矩阵。

我有一个向量1 * m和另一个1 * n,在我的情况下是V(1 * 71)和I(1 * 315)。其他向量的长度与I相同。

我想将I的每个值乘以V的所有值,并在矩阵中得到答案,其中新矩阵的每一行或每列都是I(t).*V

Ir和Temp是大小为1 * 315的向量,所有变量长度相同,T为315.

您在代码中看到的其他参数是常量值。

这是代码:

function [I] = solar2diodedyn( Ir,time,Temp )

V = 0:0.01:0.7; %open circuit voltage of one cell in V.

for t=1:time;

    T(t)= Temp(t)+273; 
    Vt(t)=(k*T(t))/q; 
    Iph(t) = Isc_cell*(Ir(t)/1000)*(1+(T_co*(Temp(t)-25)));
    I0(t)=Is1*((T(t)/Tmeas)^(3/n1))*exp(Eg*((T(t)/Tmeas)-1)/(n1*Vt(t)));
    I02(t)=Is2*((T(t)/Tmeas)^(3/n2))*exp(Eg*((T(t)/Tmeas)-1)/(n2*Vt(t)));
    I(t) = zeros(size(t));
    i=length(V);

    for x=1:i
    I(t) = Iph(t) - I0(t)*(exp((V(x)+I(t)*Rs)/(n1*Vt(t)))-1)-I02(t)*(exp((V(x)+I(t)*Rs)/(n2*Vt(t)))-1)-((V(x)+I(t)*Rs)/Rsh);
    end
end

提前致谢

1 个答案:

答案 0 :(得分:5)

如果您有两个向量x(大小为1 - { - 1}}和n(大小为1 - 按 - y),您需要一个矩阵大小为m的{​​{1}} - 按 - Mn然后您尝试计算m M(i,j) = x(i) * y(j)x }。
这可以通过matlab轻松完成

y