【发布时间】:2017-01-14 06:26:35
【问题描述】:
我有一个光谱数据(x 轴上的 1000 个变量,峰值强度为 y)和一个在不同特定 x 位置(称为峰值的矩阵)处感兴趣的峰值列表,这是我从我制作的函数中获得的。在这里,我想从每个峰的最大值到 x 轴画一条线 - 或者,最终在每个峰上方放置一个垂直箭头,但我读到它很麻烦,所以只欢迎一条垂直线。但是,使用下面的代码,我得到“错误使用线值必须是数字类型的向量”。有什么想法吗?
X = spectra;
[Peak,intensity]=PeakDetection(X);
nrow = length(Peak);
Peak2=Peak; % to put inside the real xaxis value
plot(xaxis,X);
hold on
for i = 1 : nbrow
Peak2(:,i) = round(xaxis(:,i)); % to get the real xaxis value and round it
xline = Peak2(:,i);
line('XData',xline,'YData',X,'Color','red','LineWidth',2);
end
hold off
【问题讨论】:
-
您的代码不起作用。请参阅:minimal reproducible example。
-
您是否尝试过使用
findpeaks? -
亲爱的 EBH,findpeaks 准确地提出了我想要获得的功能,但我没有 Matlab 信号处理工具箱。这就是为什么我在这里尝试制作自定义代码的原因。到目前为止我可以找到峰值,现在我只需要在适当的位置标记它们,最终像 findpeaks 一样画线。感谢您的帮助。
-
如果您已经有了峰值,那么this answer 可能会有所帮助。如果你在那里找到你需要的东西,我可以根据你的情况重写它。
标签: matlab plot line matlab-figure spectrum