2016-12-06 131 views
-3

我已經對我的數據使用了最大 - 最小距離測量,但是我得到一個錯誤是索引超出了矩陣的尺寸。最大 - 最小距離的計算

,我使用的代碼是:

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 

任何幫助,請

+0

你或許應該使用'numel'而不是'size'因爲你輸入的可能行向量及其'size'在第一維將是1。此外,你只考慮最後一次迭代因爲你沒有存儲'A'和'B',所以循環的一部分。我無法真正提供解決方案,因爲目前尚不清楚您實際要做什麼。 – Suever

+0

結果是什麼錯?你得到一個不正確的號碼?你到處都是貓咪圖片嗎?請更具體地解決您的問題。 – Adriaan

+0

我已更改代碼,錯誤是iam沒有得到任何結果,它是0,1 – Azize

回答

0

您收到此錯誤,因爲雖然你有你的輸入矩陣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