早教吧作业答案频道 -->其他-->
matlab 一个向量和矩阵中各行向量的夹角余弦值 比如A=(1,2,3,4,5)B={1,2,3,4,5;6,7,8,9,10;11,12,13,14,15;16,17,18,19,20}分别求向量A与矩阵B中各行向量的夹角余弦值并输出最大的夹角余弦值
题目详情
matlab 一个向量和矩阵中各行向量的夹角余弦值
比如A=(1,2,3,4,5)
B={1,2,3,4,5;
6,7,8,9,10;
11,12,13,14,15;
16,17,18,19,20}
分别求向量A与矩阵B中各行向量的夹角余弦值
并输出最大的夹角余弦值
比如A=(1,2,3,4,5)
B={1,2,3,4,5;
6,7,8,9,10;
11,12,13,14,15;
16,17,18,19,20}
分别求向量A与矩阵B中各行向量的夹角余弦值
并输出最大的夹角余弦值
▼优质解答
答案和解析
楼主试试下述代码:
%{
matlab 一个向量和矩阵中各行向量的夹角余弦值
比如A=(1,2,3,4,5)
B={1,2,3,4,5;
6,7,8,9,10;
11,12,13,14,15;
16,17,18,19,20}
分别求向量A与矩阵B中各行向量的夹角余弦值
并输出最大的夹角余弦值,及所对应的具体是哪一行向量
%}
function [CosXY MaxCos MaxCosAngle RCMaxCos MinCos MinCosAngle RCMinCos] = ucos(X,Y)
% ucos功能:
% (1) 计算矩阵 X 的各行向量与矩阵 Y 的各行向量之间的夹角余弦,存储在输出项 CosXY 中;
% (2) 计算最大夹角余弦值及其所对应的角度,分别存储在输出项 MaxCos 和 MaxCosAngle 中;
% (3) 输出最大余弦值所对应的 X 和 Y 所在的行,存储在 RCMaxCos 中;
% (4) 计算最小夹角余弦值及其所对应的角度,分别存储在输出项 MinCos 和 MinCosAngle 中;
% (5) 输出最小余弦值所对应的 X 和 Y 所在的行,存储在 RCMinCos 中;
[rx cx] = size(X);
[ry cy] = size(Y);
if cx~=cy
error('输入的矩阵类型不匹配,输入的矩阵X和Y必须列数相同')
end
CosXY = zeros(rx,ry);
for k = 1:rx
for l = 1:ry
CosXY(k,l) = sum(X(k,:).*Y(l,:))/norm(X(k,:))/norm(Y(l,:));
end
end
MaxCos = max(max(CosXY));
MaxCosAngle = acos(MaxCos);
[r c] = find(CosXY==MaxCos); % 找出最大余弦值所在的行r和列c;
RCMaxCos = [r c];
disp(['最大余弦值出现在X的第 ' num2str(r) ' 行与Y的第 ' num2str(c) ' 行.'])
MinCos = min(min(CosXY));
MinCosAngle = acos(MinCos);
[r c] = find(CosXY==MinCos); % 找出最小余弦值所在的行r和列c;
RCMinCos = [r c];
disp(['最小余弦值出现在X的第 ' num2str(r) ' 行与Y的第 ' num2str(c) ' 行.'])
执行你的数据:
>> A = [1,2,3,4,5];
>> B = [1,2,3,4,5;
6,7,8,9,10;
11,12,13,14,15;
16,17,18,19,20];
>> [CosXY MaxCos MaxCosAngle RCMaxCos MinCos MinCosAngle RCMinCos] = ucos(A,B);
最大余弦值出现在X的第 1 行与Y的第 1 行.
最小余弦值出现在X的第 1 行与Y的第 4 行.
CosXY = [ 1 0.964950504732767 0.945343100616969 0.935153458570522]
MaxCos = 1
MaxCosAngle = 0
RCMaxCos = [1 1]
MinCos = 0.935153458570522
MinCosAngle = 0.362104308112746
RCMinCos = [1 4]
%{
matlab 一个向量和矩阵中各行向量的夹角余弦值
比如A=(1,2,3,4,5)
B={1,2,3,4,5;
6,7,8,9,10;
11,12,13,14,15;
16,17,18,19,20}
分别求向量A与矩阵B中各行向量的夹角余弦值
并输出最大的夹角余弦值,及所对应的具体是哪一行向量
%}
function [CosXY MaxCos MaxCosAngle RCMaxCos MinCos MinCosAngle RCMinCos] = ucos(X,Y)
% ucos功能:
% (1) 计算矩阵 X 的各行向量与矩阵 Y 的各行向量之间的夹角余弦,存储在输出项 CosXY 中;
% (2) 计算最大夹角余弦值及其所对应的角度,分别存储在输出项 MaxCos 和 MaxCosAngle 中;
% (3) 输出最大余弦值所对应的 X 和 Y 所在的行,存储在 RCMaxCos 中;
% (4) 计算最小夹角余弦值及其所对应的角度,分别存储在输出项 MinCos 和 MinCosAngle 中;
% (5) 输出最小余弦值所对应的 X 和 Y 所在的行,存储在 RCMinCos 中;
[rx cx] = size(X);
[ry cy] = size(Y);
if cx~=cy
error('输入的矩阵类型不匹配,输入的矩阵X和Y必须列数相同')
end
CosXY = zeros(rx,ry);
for k = 1:rx
for l = 1:ry
CosXY(k,l) = sum(X(k,:).*Y(l,:))/norm(X(k,:))/norm(Y(l,:));
end
end
MaxCos = max(max(CosXY));
MaxCosAngle = acos(MaxCos);
[r c] = find(CosXY==MaxCos); % 找出最大余弦值所在的行r和列c;
RCMaxCos = [r c];
disp(['最大余弦值出现在X的第 ' num2str(r) ' 行与Y的第 ' num2str(c) ' 行.'])
MinCos = min(min(CosXY));
MinCosAngle = acos(MinCos);
[r c] = find(CosXY==MinCos); % 找出最小余弦值所在的行r和列c;
RCMinCos = [r c];
disp(['最小余弦值出现在X的第 ' num2str(r) ' 行与Y的第 ' num2str(c) ' 行.'])
执行你的数据:
>> A = [1,2,3,4,5];
>> B = [1,2,3,4,5;
6,7,8,9,10;
11,12,13,14,15;
16,17,18,19,20];
>> [CosXY MaxCos MaxCosAngle RCMaxCos MinCos MinCosAngle RCMinCos] = ucos(A,B);
最大余弦值出现在X的第 1 行与Y的第 1 行.
最小余弦值出现在X的第 1 行与Y的第 4 行.
CosXY = [ 1 0.964950504732767 0.945343100616969 0.935153458570522]
MaxCos = 1
MaxCosAngle = 0
RCMaxCos = [1 1]
MinCos = 0.935153458570522
MinCosAngle = 0.362104308112746
RCMinCos = [1 4]
看了 matlab 一个向量和矩阵...的网友还看了以下:
英语翻译1.产品质量公司的上游客户多为国有大型企业,并且有着比较长的合作时间,产品的质量比较稳定. 2020-05-15 …
已知直线L过点P(1,0,-1),平行于向量a=(2,1,1),平面过直线L与点M(1,2,3,) 2020-05-16 …
2^2-1^2=2*1+13^2-2^2=2*2+14^2-3^2=2*3+1……(n+1)^2- 2020-05-19 …
已知三角形的三个顶点分别为A(6,-7),B(-2,3),C(2,1),求AC边上的中线所在的直线 2020-06-03 …
根式计算化简1、(1/x^2-3x+2)+(1/x^2-x)+(1/x^2+x)+(1/x^2+3 2020-07-30 …
5x^2+16x+12=12x^2-29x+15=12x^2-25xy+12y^2=20a^2+42 2020-10-31 …
题目的意思大概是探究杠杆平衡原理,F1,L1,F2,L2这4个量,其中变2个量行不行,3个量行不行, 2020-11-03 …
求一道预备班数学期中考试的答案小明在做题时发现了一个规律:1*2/1=1-2/1,2*3/1=2/1 2020-11-05 …
人力资源管理选择题1、关键业绩指标法主要考察员工的().A.能力B.行为方式C.行为结果D.知识含量 2020-11-06 …
行列式好让人纠结啊行向量(5,2)乘以列向量(2;7)得出来的应该是一行一列的.我算出来是24.可是 2020-12-07 …