2014-04-27 165 views
0

如何在給定高度的Matlab中正確繪製峯值?我目前的方法:繪製高度的峯值

x = linspace(0,500,500); 
peaks = zeros(size(x)); 
peaks(50) = 5; 
peaks(300) = 20; 
peaks(302) = 17; 
peaks(375) = 15; 
plot(x,peaks) 

這給

Peaks

但這是醜陋的,當多個線接近,會導致問題,因爲log(0)=-Inf將其轉換爲對數刻度時混淆。有沒有合適的方法繪製峯值?


上下文:我試圖分析一個譜圖(EDXS)來確定我正在使用哪種材料。

回答

1

按比例縮放記錄,您要求Matlab在-Inf和正值之間畫一條線。這些行被跳過。

要得到一個可用的對數曲線,使用點而不是行:

plot(x,peaks,'x') 

另一個不錯的可能性積峯是stem -plot

enter image description here

+1

'stem'函數是我需要的答案。謝謝。 – Didii

0

我認爲你只在對數圖中得到單像素的原因是因爲你的大部分值都是0。由於log(0) = -Inf,這不能被繪製。

我對譜圖分析一無所知,但是如果您絕對想用對數刻度繪製它,是否可以使用等於1的「基線」(對數刻度爲0)。如果是這樣的:

x = linspace(0,100); 
peaks = ones(size(x)); 
peaks(10) = 5; 
peaks(60) = 20; 
peaks(75) = 15; 
semilogy(x,peaks) 

enter image description here

我想,這會看起來更合理的與真實的數據。注意:如果您的值小於1,我不會採用這種方法!

+0

我很抱歉,我沒有沒有正確解釋問題,我已經更新了我的問題。除了日誌規模之外,還有更多的問題。我真的在尋找一個合適的繪製峯值的方法。感謝您抽出時間。 – Didii