如何在给定高度的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)
给出了
但这很难看,当多行关闭时会引起混淆,并且在将log(0)=-Inf
转换为日志时导致问题。是否有适当的方法来绘制峰值?
背景:我试图分析一个视图(EDXS)以确定我正在使用的材料。
答案 0 :(得分:1)
缩放比例以进行记录,您要求Matlab在-Inf和正值之间绘制一条线。这些行被跳过了。
要获得可用的对数图,请使用点而不是线:
plot(x,peaks,'x')
绘制峰值的另一个不错的可能性是stem
- 情节
答案 1 :(得分: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)
我想这对你的真实数据来说会更合理。注意:如果您的值小于1
,我不会采用这种方法!