早教吧作业答案频道 -->其他-->
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 一个向量和矩阵...的网友还看了以下:
实对称矩阵合同于对角矩阵,这个对角矩阵是唯一的么?如果有一个对角矩阵的正惯性指数与这个实对称矩阵化 2020-05-15 …
不能对角化的矩阵如何求相似转换矩阵?比如矩阵A和B是两个不能对角化的矩阵,如何求他们的相似矩阵?问 2020-05-22 …
对角线都是-1,其余都是1的矩阵的逆矩阵-11111-11111-11111-1类似这样的矩阵的逆 2020-06-03 …
有个问题向你请教,一个矩阵与一个对角矩阵相乘,只要把这个矩阵乘以对角矩阵的元素就可以了吗?因为对角 2020-06-10 …
试举出一个对角矩阵和单位矩阵.对角矩阵和单位矩阵我有点分不清.牛人们给我指导下. 2020-06-12 …
这个矩阵可以对角化吗?矩阵A=1-1124-2-3-35是否可以对角化?如果可以对角化,求出可逆矩 2020-06-16 …
矩阵对角矩阵264A=1239D=diag(2,3,7)7147试求B使得A=DB 2020-07-19 …
矩阵的一个小问题什么叫对角矩阵?除主对角线上其余位置的元素都为0的矩阵?那主对角线是能否为0?比如 2020-08-02 …
初学线性代数问几个问题1-1-1-1-11-1-1-1-11-1-1-1-11求这样的一个四阶方阵的 2020-11-15 …
实对称矩阵的对角化公式的问题实对称矩阵的对角化的基本定理是Q^TAQ=∧,如果知道正交矩阵Q,对角矩 2020-11-27 …