2012-06-20 26 views
0

我在matlab中有一個128 x 100的矩陣,其中每列應被視爲一個單獨的元素。讓我們稱此矩陣M.matlab中的2d矩陣直方圖,將每列解釋爲一個單獨的元素

我有另一個128×2000矩陣(稱爲V)從矩陣列組成M.

如何會使映射每一列的頻率在所述第二被使用的直方圖矩陣?

hist(double(V),double(M)) gives the error: 

Error using histc 
Edge vector must be monotonically 
non-decreasing. 

我該怎麼做?

回答

0

這裏是一個例子。我們先從數據類似於你所描述的

%# a matrix of 100 columns 
M = rand(128,100); 
sz = size(M); 

%# a matrix composed of randomly selected columns of M (with replacement) 
V = M(:,randi([1 sz(2)],[1 2000])); 

然後:

%# map the columns to indices starting at 1 
[~,~,idx] = unique([M,V]', 'rows', 'stable'); 
idx = idx(sz(2)+1:end); 

%# count how many times each column occurs 
count = histc(idx, 1:sz(2)); 

%# plot histogram 
bar(1:sz(2), count, 'histc') 
xlabel('column index'), ylabel('frequency') 
set(gca, 'XLim',[1 sz(2)]) 

enter image description here

0

[利亞,Locb] = ismember(A,B,'rows')也返回一個矢量,Locb, 含有乙每行的最大索引中所述的,這也是一個行 在B的輸出向量,Locb,包含0的地方A不是的 行B.

ismemberrows參數可以識別來自其​​中一個矩陣的行另一矩陣的行。由於它適用於行,並且您正在查找列,所以只需轉置這兩個矩陣。

[~,Locb]=ismember(V',M'); 
histc(Locb) 
相關問題