heinz_2008
2011-08-02, 00:20
我有一段用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可以实现上面的功能吗?先谢谢了!
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可以实现上面的功能吗?先谢谢了!