matlab中的向量除法 | 您所在的位置:网站首页 › matlab中的除法怎么写 › matlab中的向量除法 |
向量之间进行除法运算,使用不加点的矩阵除法“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
|
CopyRight 2018-2019 实验室设备网 版权所有 |