2013-01-17 71 views
-1

我的輸入是一種簡單的向量:發現相關性

vector=[1 2 3 2 3 4 1 1 2]; 

(編號只從1-4),並且我想創建一個矩陣,它的行是所有可能的二數的組合(在這種情況下是16行,例如:行1是11,行2是12等),並且具有與矢量長度減一(8)相同的列數。

矩陣中的每個單元格都保存特定組合在具有特定相對距離(即列數)的向量中找到的次數。 例如:

矩陣(1,1)= 1(1是發現一個時間的1至另一個1的相對距離內) 矩陣(1,6)= 1(1是發現內的相對一次到另一個1)
矩陣(2,1)= 2(1 6距離被發現爲1的相對距離內兩次以另一個2)

有誰知道,如果MATLAB有,做一個函數? (或接近?) (不通過循環,使用'trfind'等,我知道那些)。

如果有人知道我可以使用的特定功能,請讓我知道!

謝謝

+1

很難理解你想要做什麼,但聽起來你可以很容易地寫出該功能,不是嗎? – thang

+1

你能否明確地寫出預期的輸出而不是用單詞來描述它? –

回答

0

Matlab沒有這樣的功能。循環似乎是最簡單的方式來完成它。

2

如果您只對同時出現的次數感興趣,即兩個數字一起出現的次數,您可以使用Matlab函數'graycomatrix',它可以給出灰度共生矩陣。

因爲它是旨在與矩陣使用,您應該將向量轉換成一個矩陣,例如用零填充:

vector=zeros(9); 
vector(1,:)=[1 2 3 2 3 4 1 1 2]; 
[glcm] = graycomatrix(vector,'NumLevels',5,'G',[]) 

你會得到以下結果:

glcm = 

    64  0  0  0  0 
    0  1  2  0  0 
    0  0  0  2  0 
    0  0  1  0  1 
    0  1  0  0  0 

您可以忽略第一行和第一列,因爲它們對應的值爲0:

glcm(:,1)=[]; 
glcm(1,:)=[]; 
glcm 


glcm = 

    1  2  0  0 
    0  0  2  0 
    0  1  0  1 
    1  0  0  0 

現在您擁有每個組合的共同出價次數。例如,glcm(1,1)給出了兩個1一起出現的次數,glcm(1,2),1和2一起出現的次數...

但是我沒有發現任何可以做你所問的功能,這是考慮到距離。所以我認爲你必須通過循環來完成。