声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 882|回复: 4

[编程技巧] 想用循环代替一下

[复制链接]
发表于 2006-10-19 17:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我写的小程序,可是不知道应该用什么循环与就能代替一下,要不这么算有点太傻了。因为这是向量运算,所以它不让写成y(;,i)形式,给看看吧,谢谢了
k=[2 -1 0 0 ;-1 2 -1 0 ;0 -1 2 -1 ;0 0 -1 1];
m=[0 0 0 0 ;0 2 0 0 ;0 0 0 0 ;0 0 0 1];
format long
x1=[1;1;1;1];
yk=m*x1
lx=inv(k)*yk
ly=m*lx
ykp1=ly/(lx'*ly)^0.5
r1=lx'*yk/(lx'*ly)
%
yk=ykp1
lx=inv(k)*yk
ly=m*lx
ykp1=ly/(lx'*ly)^0.5
r2=lx'*yk/(lx'*ly)
%
yk=ykp1
lx=inv(k)*yk
ly=m*lx
ykp1=ly/(lx'*ly)^0.5
r3=lx'*yk/(lx'*ly)
回复
分享到:

使用道具 举报

 楼主| 发表于 2006-10-19 17:51 | 显示全部楼层
其实就是将上一个算完的值带入下一次运算。
发表于 2006-10-19 19:17 | 显示全部楼层
k=[2 -1 0 0 ;-1 2 -1 0 ;0 -1 2 -1 ;0 0 -1 1];
m=[0 0 0 0 ;0 2 0 0 ;0 0 0 0 ;0 0 0 1];
format long;
x1=[1;1;1;1];
%yk=m*x1;
ykp1=m*x1;
for ii=1:3
    yk = ykp1;
    lx=inv(k)*yk;
    ly=m*lx;
    ykp1=ly/(lx'*ly)^0.5;
    rr=lx'*yk/(lx'*ly);
    eval(['r' num2str(ii) '=rr']);
end

评分

1

查看全部评分

发表于 2006-10-19 19:20 | 显示全部楼层
另外,类似你这种形式,如果次数不算很多,可以不用循环,把上面我的代码里循环体部分用一个function fun1代替,然后r1=fun1(function需要的各个参数列表),r2=fun1(function需要的各个参数列表),就可以了。如果很多,最好是用我上面给出的循环的形式。
 楼主| 发表于 2006-10-19 19:50 | 显示全部楼层
谢谢了 我逐个方法试一试 太感谢了!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-19 22:13 , Processed in 0.058341 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表