2010-10-22 33 views
0

我將介紹我在MATLAB中創建的工作,但是我無法使用繪圖函數將數據處理爲一個合適的形式。在MATLAB中使用圖形繪製所需的幫助

我的代碼如下所示:

[inputname, pathname] = uigetfile('*.wav', 'Select WAV-file'); 

thumb1 = inputname;    %# Get filename information 
fprintf('\n%s is being turned into a 30s thumbnail...\n', thumb1); 
fprintf('Please wait..!\n\n'); 
%# load the signal 
[y, fs, nb] = wavread(thumb1); 
y = mean(y,2);        %# stereo, take avrg of 2 channels 

%# Calculate frame energy 
fWidth = round(fs*10e-3);     %# 10ms 
numFrames = floor(length(y)/fWidth); 
energy = zeros(1,numFrames); 
for f=1:numFrames 
    energy(f) = sum(y((f-1)*fWidth+1:f*fWidth).^2); 
end 

基本上我想繪製軌道的能量隨時間(單位:秒)。

plot(energy) 

幾乎做什麼,我需要,但我的空白不尋常的數量在這是不存在的.wav文件alt text賽道結束。這個空白空間是我遇到的主要問題。理想情況下,我希望x軸在幾秒鐘內顯示!任何幫助將非常感激。

EDIT1:

使用第一種建議的方法:

alt text

回答

1

還有

axis tight 

,用於設置軸「從緊」的限制。請參閱文檔:

+0

工作得很好,謝謝。 – Velocity 2010-10-22 11:47:23

1

默認情況下,MATLAB使用一些啓發式規則來選擇圖形尺度的極限。您可以使用xlimylim函數(例如xlim([0 length(energy)]))覆蓋它們。

如果你想暗算實際的時間,你可以這樣做:

t = (0:length(energy)-1)/fs; % Timebase in seconds 
plot(t, energy); 
+0

這仍然不是我正在尋找的東西,我很害怕。我已使用您的建議更新了原始帖子的外觀。 – Velocity 2010-10-22 11:32:05

+0

@Mark:'xlim'沒有做你想做的事嗎? – 2010-10-22 11:33:29

+0

對不起,我完全看過那部分。我道歉。 @埃德里克的建議雖然完美,但感謝你的幫助。 – Velocity 2010-10-22 11:48:00