Matlab 最大最小距离计算
我在数据上使用了“最大-最小距离”度量,但我发现一个错误是索引超过了矩阵维度 我使用的代码是:Matlab 最大最小距离计算,matlab,cluster-computing,distance,Matlab,Cluster Computing,Distance,我在数据上使用了“最大-最小距离”度量,但我发现一个错误是索引超过了矩阵维度 我使用的代码是: clc; clear all; close all; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% numRows = 100; A = rand(numRows, 2); %// Example of input matrix cent= [ 2.2 3.1; 4.5 5.1]; d
clc;
clear all;
close all;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
numRows = 100;
A = rand(numRows, 2); %// Example of input matrix
cent= [ 2.2 3.1; 4.5 5.1];
d= [];
sizeX = size(A,1);
numofC = size(cent,1);
for i = 1 : sizeX
for j = 1:numofC
A= max(cent(j,:),A(i,:));
B = min(cent(j,:),A(i,:));
end
dist(i)= sum(B)/sum(A)
end
请提供任何帮助您会收到此错误,因为尽管您有输入矩阵
A
,但您试图将max(cent(j,:),A(i,:)
分配给同一变量A
,从而覆盖内容。循环中的A
的后续调用将尝试调用第一次通过循环时重写的元素
我对你的代码做了一些修改;例如,您也没有名为dist
的矩阵
clc;
clear;
close all;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
numRows = 100;
A = rand(numRows, 2); %// Example of input matrix
cent= [ 2.2 3.1; 4.5 5.1];
sizeX = size(A,1);
numofC = size(cent,1);
dist= zeros(numRows,1);
for i = 1 : sizeX
for j = 1:numofC
X = max(cent(j,:),A(i,:));
Y = min(cent(j,:),A(i,:));
dist(i)= sum(X)/sum(Y)
end
end
您可能应该使用
numel
而不是size
,因为您的输入很可能是行向量,并且它们在第一维度中的size
将为1。另外,由于没有存储A
和B
,所以只考虑循环的最后一次迭代。我不能提供一个解决方案,因为不清楚你到底在做什么。什么是错误的结果?你打错号码了吗?你到处都有猫的照片吗?请详细说明您的问题。我已更改代码,错误是我没有得到任何结果,它是0,1@Suever大小将返回100 sizeX=大小(A,1);它不是1??