马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
我现在遇到这样一个问题:
我要求振型和固有频率,所以我用的命令H=inv(A)*B; [V,h]=eig(H);其余的我就不一一罗嗦了.
现在真个程序我已经完成了,没有别的错误.现在唯一的问题就是由于矩阵A和B导致程序的运行速度太慢了.
其中A=[m,o;m,c];%m是324x324的对角矩阵,o是324x324的零矩阵,m是324x324的对角矩阵,c是324x324的矩阵
B=[-m,o;o,k];%m是324x324的对角矩阵,k是324x324的矩阵
A和B是648x648的矩阵,我实验的一下:计算A和B的1/4大约需要5分钟.
也就是计算:A(1:324,1:324);
A(1:324,325:648);
A(325:648,1:324);
A(325:648,325:648);
B(1:324,1:324);
B(1:324,325:648);
B(325:648,1:324);
B(325:648,325:648);
其中每一个的计算大约是5分钟,而且计算的结果是正确的.
然后我开始计算A和B,结果一个下午才运行出结果.
然后我又用了一下稀疏矩阵sparse把A和B分别表示成稀疏矩阵的形式,结果matlab执行了快3个小时才算出来.
我现在就想:如果一个648x648的矩阵表示成稀疏矩阵的形式还要运行这样长的时间吗?
恳请各位指教.
另外我要指出的是矩阵c和K的大部分也是零元素,不太复杂.
程序中我用到了几个循环,但已经被我压缩到最少了,应该不是循环的问题. |