【问题标题】:Multiplication of vectors in two loops两个循环中的向量相乘
【发布时间】:2014-07-22 08:07:13
【问题描述】:

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

我有一个向量 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

提前致谢

【问题讨论】:

    标签: matlab for-loop vector matrix multiplication


    【解决方案1】:

    如果您有两个向量 x(大小为 1-by-n)和 y(大小为 1-by-m),并且您想要一个大小为 n 的矩阵 M -by-m 这样M(i,j) = x(i) * y(j) 然后您正在尝试计算xyouter product
    这可以用matlab轻松完成

    >> M = x.' * y;
    

    【讨论】:

    • 非常感谢亲爱的 Shai。很抱歉,当我是新人且声誉低于 15 时,我无法投票给你。
    • @Hamed 不用担心。很高兴我能帮上忙。
    • @Shai +1,专门用于使用.' 而不是' :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    相关资源
    最近更新 更多