![]() |
矩阵乘方计算的优化
我有一段用for 计算矩阵乘方的语句:
for i=1:1:T x(i)=i; y(i)=V*M^x(i)*S; end plot(x,y,'r'); legend ('pfd') 其中M是一个4x4的矩阵,V是一个1x4的行向量,S是一个4x1的列向量,i从1到T逐渐变大,最后得到y(i)的一系列值,并用描点法输出图线。 但这算法有个缺点,若T=1000,算y(500),M作500次的乘方; 算y(501),M又要再作501次的乘方。。。当T特别大时,运算就显得特别没有效率 我是希望能不能改成下面的算法,M的乘方在计算后都被存下来,下一次计算时,只要上一次的乘上M就可以了,最后输出z(i) y(0)=1; y(i)=y(i-1)*M; z(i)=V*y(i)*S; i从1到T逐渐变大,计算z(i)的值,最后用描点法输出z(i)随i 变化的图线。 请问大家,matlab可以实现上面的功能吗?先谢谢了! |
回复: 矩阵乘方计算的优化
你写的方法不可行 因为y(1)是4*4的 下一步y(2)没有办法运算了
|
回复: 矩阵乘方计算的优化
y(1)是4*4,M也是4*4,为什么不能继续运算啊?
|
回复: 矩阵乘方计算的优化
[QUOTE=heinz_2008;47218]y(1)是4*4,M也是4*4,为什么不能继续运算啊?[/QUOTE]
我看错了 你写的向量表示 我以为就一个数呢 应该写成y{1} 不过你这样表示 还是要循环计算y{i} |
回复: 矩阵乘方计算的优化
[QUOTE=anbcjys;47238]我看错了 你写的向量表示 我以为就一个数呢 应该写成y{1} 不过你这样表示 还是要循环计算y{i}[/QUOTE]
是啊,C里写循环还行,matlab里就不知道怎么写循环了。。。还是用for语句吗?你能具体说说怎么写吗?谢谢! |
回复: 矩阵乘方计算的优化
搞定了!!!用三维数组!!!
Y(:,:,1)=eye(4); for i=1:T X(i)=i; Y(:,:,i+1)=Y(:,:,i)*M; Z(i)=V*Y(:,:,i+1)*S; end plot(X,Z,'b'); |
所有时间均为北京时间。现在的时间是 03:53。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.