24小时热门版块排行榜    

查看: 1249  |  回复: 14
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

飞扬2282

荣誉版主 (著名写手)

[交流] 【求助】Matlab最小二乘法简单编程代码?



求Matlab7编写程序代码,实现如下简单计算!

(uj-ui)v-(vj-vi)u=vi*uj-vj*ui     ( i=1,2,....N/2;  j=i+N/2 )

其中: ui,uj,vi,vj,N均为已知数值,求u,v?


[ Last edited by 飞扬2282 on 2009-4-8 at 15:43 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

飞扬2282

荣誉版主 (著名写手)

引用回帖:
Originally posted by sci_chris at 2009-4-9 22:35:


按照楼主的意思,N应该是偶数了?如果是奇数,那N/2就不是一个整数,会导致u不能分成相同长度的向量,这个在matlab中是不能做的。

其实不用编成m文件进行调用,因为最小二乘可以表示成矩阵计算的,就是我在 ...

谢谢sci_chris,麻烦版主给sci_chris加20个金币,从我这里扣吧,谢谢。


对,N的取值必须是偶数;uj, ui, vj, vi不是向量u, v 中的元素,写成u, v是容易误会

我也没有使用m文件进行调用,因为我还不知道怎么调用m文件

我是把fspdlh的代码修改了一下使用的,就是和你说的差不多:

N=6;
u=[1 3 3 4 5 6]';
v=[1.5 2.5 3.5 4.5 5.5 6.5]';

%Av-Bu=C
ind=floor(N/2);
A=u(ind+1:ind*2)-u(1:ind);
B=v(ind+1:ind*2)-v(1:ind);
C=v(1:ind).*u(ind+1:ind*2)-v(ind+1:ind*2).*u(1:ind);
% [A -B]*[v u]'=C
% y=[v u]';
y=([A -B])\C

y =

    5.5000
    5.0000

输出u是5.5,v是5(fspdlh,我觉得输出应该第一个值是v,第二个值是u吧?)
14楼2009-04-10 10:35:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 15 个回答

fspdlh

金虫 (正式写手)

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
sunxiao(金币+3,VIP+0):谢谢参与,欢迎常来仿真编程版 4-8 23:44
飞扬2282(金币+8,VIP+0):如何执行命令求出u,v的值呢?函数执行不了啊 4-9 10:15
function y=solveuv(u,v,N)
%Av-Bu=C
ind=floor(N/2);
A=u(ind+1:ind*2)-u(1:ind);
B=v(ind+1:ind*2)-v(1:ind);
C=v(1:ind).*u(ind+1:ind*2)-v(ind+1:ind*2).*u(1:ind);
%[A B]*[u v]'=C
y=([A B])\C;
2楼2009-04-08 18:46:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

飞扬2282

荣誉版主 (著名写手)

引用回帖:
Originally posted by fspdlh at 2009-4-8 18:46:
function y=solveuv(u,v,N)
%Av-Bu=C
ind=floor(N/2);
A=u(ind+1:ind*2)-u(1:ind);
B=v(ind+1:ind*2)-v(1:ind);
C=v(1:ind).*u(ind+1:ind*2)-v(ind+1:ind*2).*u(1:ind);
%[A B]*[u v]'=C
y=([A B])\C;

请问,如果
N=6;
u1=1,u2=3,u3=3,u4=4,u5=5,u6=6;
v1=1.5,v2=2.5,v3=3.5,v4=4.5,v5=5.5,v6=6.5;

如何执行命令求出u,v的值呢?函数执行不了啊?
刚接触matlab
3楼2009-04-09 10:15:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fspdlh

金虫 (正式写手)

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
飞扬2282(金币+10,VIP+0):其中%[A B]*[u v]'=C 是否应为%[A B]*[v -u]'=C ?? 4-9 11:20
哦,忘了说了,u,v都是列向量
N=6;
u=[1 3 3 4 5 6]';
v=[1.5 2.5 3.5 4.5 5.5 6.5]';
y=solveuv(u,v,N)
4楼2009-04-09 10:48:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 龙 兔 虎 猫 高级回复 (可上传附件)
信息提示
请填处理意见