标题:利用matlab编写迭代算法进行线性模拟过程出现的问题,希望有高手指点一下
取消只看楼主
悉心
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-7-31
结帖率:100%
 问题点数:0 回复次数:0 
利用matlab编写迭代算法进行线性模拟过程出现的问题,希望有高手指点一下
这是我最近在做的一个课题,函数模型是y=ax+b,我利用了最小二乘方法求出了参数a,b的值,但是我还需要利用这个最小二乘求出来的值利用我已有的公式进行迭代求出更精确的a,b的值,我的部分程序是这样的
syms x
N=A'*A;
c=A'*L;
x0=inv(N)*c;
v=(L-A*x)'*(L-A*x)/(1+x'*x);
f=inv(N)*(c+x*v);
eps=1e-6;
maxcnt=1000;
x1=x0;
cnt=1;
while cnt<=maxcnt
    x2=sub(f,x,x1);
    if abs(x1-x2)<eps
    break;
    end
    [cnt,x1,x2]
    cnt=cnt+1;
    end
其中的矩阵A,L我都有真值代入的,但是,每次运行都会出现问题
第一个问题时:??? Error using ==> sym.minus
Array dimensions must agree.

Error in ==> zongti at 8
f=inv(N)*(c+x*(L-A*x)'*(L-A*x)/(1+x'*x));
第二个问题是:?? Error using ==> reshape
To RESHAPE the number of elements must not change.

Error in ==> sym.double at 45
D = reshape(eval(X),siz);

Error in ==> sym.subs at 165
            NEWf = double(sym(maple('map','F',char(sym([NEWexpr{:}])))));

Error in ==> zongti at 14
    x2=subs(f,x,x1);
请问谁能指点一下我,我编的程序逻辑上我都看了一下,没什么问题,但是运行的时候就有问题了,还有就是在这部中if abs(x1-x2)<eps,x1和x2都是一个二行一列的矩阵,这两个矩阵怎么有效的进行比较
搜索更多相关主题的帖子: matlab 
2013-01-13 23:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-396492-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.052767 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved