24小时热门版块排行榜    

查看: 1045  |  回复: 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的回帖

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的回帖

飞扬2282

荣誉版主 (著名写手)

引用回帖:
Originally posted by fspdlh at 2009-4-9 10:48:
哦,忘了说了,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)

非常感谢!

其中%[A B]*[u v]'=C 是否应为

%[A B]*[v -u]'=C

5楼2009-04-09 11:19:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tonga

金虫 (正式写手)

引用回帖:
Originally posted by 飞扬2282 at 2009-4-9 11:19:


非常感谢!

其中%[A B]*[u v]'=C 是否应为

%[A B]*[v -u]'=C


是的,
我要从北走到南
6楼2009-04-09 11:31:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fspdlh

金虫 (正式写手)

★ ★ ★ ★ ★ ★ ★ ★ ★
飞扬2282(金币+7,VIP+0):非常感谢,最近做点东西,需要matlab编程,有问题再麻烦您,谢谢 4-9 12:50
sunxiao(金币+2,VIP+0):谢谢参与,欢迎常来仿真编程版 4-9 23:12
哦,不好意思,这地方是搞错了。
7楼2009-04-09 12:00:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sci_chris

金虫 (正式写手)

★ ★
kuhailangyu(金币+2,VIP+0):感谢你的参与,楼主期待你的解答!替楼主先谢了! 4-9 16:32
用最小二乘法最简单:把

x1i = (uj-ui);
x2i = -(vj-vi);

放到一个矩阵中:X = [x1i x2i];
而u,v可以看作是系数向量:b = [u;v];
yi = vi*uj-vj*ui;

则可以建立方程:Xb = y;

利用最小二乘法的矩阵计算式:
b = inv(X'*X)*X'*y

就可以直接得到系数向量b,里面的各个元素就是u,v。而不用解任何方程。
8楼2009-04-09 15:08:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

飞扬2282

荣誉版主 (著名写手)

引用回帖:
Originally posted by sci_chris at 2009-4-9 15:08:
用最小二乘法最简单:把

x1i = (uj-ui);
x2i = -(vj-vi);

放到一个矩阵中:X = [x1i x2i];
而u,v可以看作是系数向量:b = [u;v];
yi = vi*uj-vj*ui;

则可以建立方程:Xb = y;

利用最小二乘法的 ...

您能详细给出代码吗,我可以给金币20个。
上面fspdlh的方法好像不对啊,我带了几个数试了一下

N=6;
u=[1 2 3 4 5 6]'
v=[2 3 5 7 8 9]'

算出来的结果y =

    5.0000
   -3.0000

不对啊
不满足方程啊
9楼2009-04-09 16:19:43
已阅   回复此楼   关注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;

问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);

不应该*2吧,j的取值范围是 j=i+N/2 ,是否应该是
ind+1:ind呢?

另外,C=v(1:ind).*u(ind+1:ind*2)-v(ind+1:ind*2).*u(1:ind);
其中的.*表示什么意思呢?》
刚刚接触matlab,问了很多幼稚的问题
10楼2009-04-09 17:26:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 飞扬2282 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见