###### 问题遇到的现象和发生背景
a=[1.8402 2.2128 3.2204 1.5977 2.1502 1.5730 2.4017] ;
b0=[1.0609 2.1789 3.4293 1.8842 2.4043 1.6937 2.5317 ];
%夹角余弦(Cosine)
X= [a;b0];
D = 1- pdist(X, 'cosine'); %得到的是1减夹角余弦的值
%M = pdist(X(i),'mahalanobis');%马氏距离
%S = pdist(X(i), 'seuclidean',[0.5,1]);%加权欧氏距离
C = corrcoef( X' ) ; %将返回相关系数矩阵
Co = pdist( X , 'correlation'); %将返回相关系数距离
disp(X);
disp(D);
disp(C);
disp(Co);
%%%%%%%%%%%%%%%%
b1=[1.5388 2.4122 3.0286 1.7177 2.3021 1.5988 2.3754 ];
b2=[1.6398 2.2983 3.0804 1.7667 2.3327 1.4960 2.3154 ];
b3=[1.6660 2.3066 3.0288 1.7727 2.3274 1.5178 2.3540 ];
b4=[1.7019 2.2130 2.9409 1.8149 2.3806 1.5597 2.2804 ];
b5=[1.5875 2.2938 3.0275 1.7381 2.2686 1.6361 2.4759 ];
怎么用合理的for循环和矩阵来简化呢,想要得到 a与上面012345的相应值
%数据
a=[1.8402 2.2128 3.2204 1.5977 2.1502 1.5730 2.4017] ;
b0=[1.0609 2.1789 3.4293 1.8842 2.4043 1.6937 2.5317 ];
b1=[1.5388 2.4122 3.0286 1.7177 2.3021 1.5988 2.3754 ];
b2=[1.6398 2.2983 3.0804 1.7667 2.3327 1.4960 2.3154 ];
b3=[1.6660 2.3066 3.0288 1.7727 2.3274 1.5178 2.3540 ];
b4=[1.7019 2.2130 2.9409 1.8149 2.3806 1.5597 2.2804 ];
b5=[1.5875 2.2938 3.0275 1.7381 2.2686 1.6361 2.4759 ];
for i = 1:1:6
X = ['X',num2str(i)];
b = ['b',num2str(i-1)];
D = ['D',num2str(i)];
C = ['C',num2str(i)];
Co = ['Co',num2str(i)];
eval([X,'=[a;',b,']']);
eval([D,'=1-pdist(',X,',''cosine'');']);
eval([C,'=corrcoef(',X,''' )']);
eval([Co,' = pdist(',X,', ''correlation'')']);
% eval(['disp(',X,');']);
% eval(['disp(',D,');']);
% eval(['disp(',C,');']);
% eval(['disp(',Co,');']);
% %%%%%%%%%%%%%%%%
end
你看这样满足你的需求吗,按照循环分别将不同下标的b0,b1,...,b5数据与a进行计算,结果保存在Di,Ci,Coi,其中i=1,2,...,6
若想显示,去除后4个注释即可。
你是想自己把计算过程实现吗?不利用matlab自带的函数