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
举个例子: [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
相关文章推荐
- 基于MATLAB的线性代数 单个向量的长度
- matlab 产生向量
- Matlab随机生成元素和为K的向量
- matlab中的矩阵与向量运算
- matlab中矩阵和向量的创建
- 基于Matlab来计算矩阵特征值和特征向量
- [matlab]向量复制成矩阵
- Matlab图像的代数运算(图像的除法)
- matlab读取向量中所有连续元素
- matlab中乘法“*”和点乘“.*”;除法“/”和点除“./”的联系和区别。
- matlab 复制一个行向量为多个相同的行向量,用于求向量和矩阵距离
- 基于MATLAB的线性代数 两个向量的夹角
- matlab_向量
- matlab中生成数值一样的向量
- matlab 矩阵除法
- 向量相似度度量(二):EMD (Earth Mover's Distance)的MATLAB对照实现
- Matlab与线性代数 -- 向量的范数
- MATLAB画向量图
- 图像检索:颜色聚合向量(CCV)及matlab实现
- 基于MATLAB的线性代数 向量单位化