菜鸟求助编程循环问题(帮忙看看程序)
:@(过程约束方程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 编辑 ] 看下本版规则! 出错提示?
LZ的编程好像亦未完成!? 给个建议编程急不得
[ 本帖最后由 ChaChing 于 2009-4-22 15:19 编辑 ] 主任您好
我感觉第二步那个e是 单位 列向量,第i个是 1,其他为零。这一步取得好像不对
还有就是第八步,实现不了循环到第一步:@( i=1:7 k=1:5 看下是不是这里的问题 i和k是不是得相等呀? :@(重新写的新的了,还是不知道那个把新的y转入到第一步 再加一个循环 感觉少点东西,就不知道往哪里填写:@o 感觉你的编程思路很混乱啊。。。
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 编辑 ]
回复 8楼 ydlcsu 的帖子
1、A矩阵没有错误啊2、我用这两个式子 e= zeros(7,1);
e(k,1) = 1;得到e为单位列向量第i个为1,其余为0的 矩阵,不知道对不对
3.你说的有道理,呵呵,谢谢
4、我也不清楚 怎么写成子函数形式啊? 抱歉! 不确定"子函数形式"指什麽? 对应的英文是什麽?
页:
[1]