prince00840 发表于 2009-4-22 12:32

菜鸟求助编程循环问题(帮忙看看程序)

:@(过程约束方程Ax=c(我在编程序时候c=0了)

clear
for k=1:7
x0=;
x=;%真实值
y=;%测量值
A=[1 -1 1 0 0 0 0
    0 1 -1 -1 0 0 0
    0 0 01 -1 0 0
    0 0 0 01 -1 -1];
for i=1:7
    Q(i,i)=0.01*y(i);% 方差协方差矩阵Q对角线元素取测量值的0.01
end
       e= zeros(7,1);
e(k,1) = 1;%e为单位列向量第i个为1,其余为0
r=A*inv(y(k)); %每一个节点的残差为r(i),c=0
V=A*Q*A';%r的协方差
f=A*e ;   % ??
T=((f'*inv(V)*r).^2)/(f'*inv(V)*f); %T(k)=r'*inv(V)*r-inv(r-b*f)*inv(V)*(r-b*f);
Tc=0.248445; %计算查表求检验统计量的临界值Tc
    if T(k)>Tc
         b=inv(f'*inv(V)*f)*(f'*inv(V)*r);         
      y=y-b*e;   %最后一步循环回去不会
         Ax=-b*e;
          else               
    end
end   

我感觉第八步循环不回去
??? Error using ==> minus
Matrix dimensions must agree.
Error in ==> Untitled0421 at 29
      y=y-b(k)*e;

[ 本帖最后由 prince00840 于 2009-4-22 18:10 编辑 ]

ChaChing 发表于 2009-4-22 15:04

看下本版规则! 出错提示?
LZ的编程好像亦未完成!? 给个建议编程急不得

[ 本帖最后由 ChaChing 于 2009-4-22 15:19 编辑 ]

prince00840 发表于 2009-4-22 15:16

主任您好
我感觉第二步那个e是 单位 列向量,第i个是 1,其他为零。这一步取得好像不对

还有就是第八步,实现不了循环到第一步:@(

liushuiwuxin 发表于 2009-4-22 17:18

i=1:7      k=1:5   看下是不是这里的问题   i和k是不是得相等呀?

prince00840 发表于 2009-4-22 18:11

:@(重新写的新的了,还是不知道那个把新的y转入到第一步

yufeng 发表于 2009-4-23 08:28

再加一个循环

prince00840 发表于 2009-4-23 11:16

感觉少点东西,就不知道往哪里填写:@o

ydlcsu 发表于 2009-4-23 11:44

感觉你的编程思路很混乱啊。。。
1.A矩阵赋值第三行是不是漏掉了一个-1?
2. e(k,1) = 1;%e为单位列向量第i个为1,其余为0
你的注释和你的命令对不上啊??到底是行还是列??
3.for k=1:7 应该放在A赋值之后吧?否则,每次循环开始,y都会别重新赋值为初始值,当然没办法对y进行更新了。
4. else应该放在Ax=...这句前面??

[ 本帖最后由 ydlcsu 于 2009-4-23 11:49 编辑 ]

prince00840 发表于 2009-4-23 14:02

回复 8楼 ydlcsu 的帖子

1、A矩阵没有错误啊
2、我用这两个式子   e= zeros(7,1);
e(k,1) = 1;得到e为单位列向量第i个为1,其余为0的 矩阵,不知道对不对
3.你说的有道理,呵呵,谢谢
4、我也不清楚

prince00840 发表于 2009-7-21 18:04

怎么写成子函数形式啊?

ChaChing 发表于 2009-7-21 23:05

抱歉! 不确定"子函数形式"指什麽? 对应的英文是什麽?
页: [1]
查看完整版本: 菜鸟求助编程循环问题(帮忙看看程序)