2015-06-12 57 views
-1

我有400個文件,每個包含大約500000個字符,而這些500000個字符只包含大約20個字母。我想創建一個直方圖,指示使用的最多10個字母(x軸)和每個字母使用的次數(y軸)。我寫了這段代碼,裏面有一些缺少的東西,我想知道每個條對應哪個字母。我應該在代碼上添加什麼?你可以改變整個代碼,但保持這對我來說更好。爲我提供整個代碼,以便我可以將其直接複製到腳本並運行它。matlab,直方圖中的每個條對應哪個字母

 i = 1; 
    z = zeros(1, 10); 
     for i=1:400 
    j = num2str(i); 
    file_name = strcat('part',j,'txt'); 
    file_id = fopen(file_name); 
    part = fread(file_id, inf, 'uchar'); 
    h = hist(part,10); 
    z = z + h; 
    fclose(file_id); 
end 

回答

0

首先,您使用hist是錯誤的。 hist(data,10)將根據由10個分箱組成的數據創建直方圖,因此分箱將對應於文件中的多個字符。

解決這將是預定義倉喜歡使用hist道:

bins = 1:255; % define the bins for hist 
histSum = zeros(numel(bins),1); 

for file=1:10; 
    data = randi(25,100) + 'a';  %Generate random data - letters between 'a' and 'z' 
    data = reshape(T,numel(T),1); % Make it a vector 

    histSum = histSum + hist(data,bins)'; 
end 

請注意,您必須確定您的垃圾桶,以適應所有可能的值,因此從1到255