您的位置:首页 > 编程语言 > MATLAB

matlab中的向量除法

2014-05-27 01:53 183 查看
向量之间进行除法运算,使用不加点的矩阵除法“A/B”时,问题可以描述为:给定两个向量A、B,求一个常量x,使得A=x * B。
举个例子: [2 4]/[1 2]=2。很显然,当两个向量中对应的每一组元素都有固定的比值时,答案很简单,就等于任一组对应元素之比。但若两个向量中对应的元素之比并不是都相等时,除出来的结果等于多少呢?例如: [2 5] / [1 2] = ? 不论哪个常数 x 都不能使得 [2 5] = x * [1 2] 成立。那此时的矩阵(向量)除法还有没意义呢?有意义!在很多时候,我们测得了两组向量数据,并且知道它们之间满足一个固定的倍数关系,具体的比值需要我们去求,但由于各种原因,数据存在测量误差,每一组数据的比值又都不一样,只能选一个比较合适的比值,使得其中一个向量乘上这个比值后与另一个向量尽量相等(两个向量中对应的元素尽量相等,全部相等是不可能的)。怎样才叫尽量相等呢?我们一般喜欢用误差的最小平方和来表示,以 [2 5] / [1 2] 为例,即求一个常量x,使得
(2 - x * 1)^2 + (5 - x * 2)^2
最小。 于是,一个向量间的除法问题,转化为了一个求单变量2次函数的最小值问题,求极值很简单,对函数求导再令其等于0就OK了。更一般地,我们考虑求如下两个向量的除法问题:
A=[A1 A2 ………… An ], B=[B1 B2 ………… Bn ]
求x,使得f(x)=(A1 - x * B1)^2 + (A2 - x * B2)^2 …… + (An - x * Bn)^2 最小。
解:对f求导得:
f'(x)=2(A1-x * B1) * (-B1) + 2(A2-x * B2) * (-B2) …… + 2(An-x * Bn) * (-Bn)
=-2A1 * B1 + B1^2 * x - 2A2* B2 + B2^2 * x …… -2An * Bn + Bn^2 * x
=-2(A1 * B1 + A2 * B2 ……+ An * Bn) + 2(B1^2 + B2^2 …… + Bn^2)x
令f'(x)=0,对x求解可得到:
x= (A1 * B1 + A2 * B2 ……+ An * Bn) / (B1^2 + B2^2 …… + Bn^2)
用matlab的语句表示出来,也就是x=sum(A.*B)/sum(B.^2)
例如,在matlab中运行:
A=[ 2 5 ];
B=[ 1 2 ];
A/B
ans=

2.4000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: