allenfieldin 发表于 2009-9-26 09:13

关于数组之间的运算问题----寻求帮助

结构共振时其动静反应比计算如下

计算如下:
clear all
w=2*pi/1.5;                      %%w为常数
t=0:0.1*pi/w:30*pi/w         %%t为1*301向量
xi=;   %%t为1*6向量

问题是:
怎样得到R(t),它应该是一个关于(t,xi)的6*301的矩阵
数组运算之间的整合我不是太懂,还请大家多多帮助!!
注意:xi同时存在于计算的分子和分母

不想用循环

[ 本帖最后由 allenfieldin 于 2009-9-26 09:16 编辑 ]

sogooda 发表于 2009-9-26 10:35

我想你是要做一个R(t,xi)的表格吧,如果我没理解错的话。所以图片里的公式应该是R(t,xi)而不是R(t)。
如果是这样的话,用循环的方法更容易理解,就这个问题的规模来说速度也不慢。
不过,还是有办法避免使用循环的,下面的代码仅供参考。
clear all
w=2*pi/1.5;                      %%w为常数
t=(0:0.1*pi/w:30*pi/w)' ;      %%t为1*301向量
xi=';   %%t为1*6向量
for ii=1:length(t)
    for jj=1:length(xi)
      R1(jj,ii)=(exp(-xi(jj)*w*t(ii))-1)*cos(w*t(ii))/2/xi(jj);
    end
end

R2=(exp(-xi*w*t')-1).*repmat(cos(w*t)',6,1)./repmat(xi,1,301)/2;
norm(R1-R2) %验证非循环的方法求解结果是否正确


[ 本帖最后由 sogooda 于 2009-9-26 10:36 编辑 ]

allenfieldin 发表于 2009-9-26 19:51

太感谢sogooda 了,我验证了一下,没问题
而且我现在也终于明白怎样进行不同维数数组之间的运算了,特别是这个Reshape函数真的很有用,对点乘也清楚了一点,呵呵
谢谢sogooda !
页: [1]
查看完整版本: 关于数组之间的运算问题----寻求帮助