У меня есть спектральные данные (1000 переменных на xaxis и интенсивности пиков как y) и список интересующих пиков в разных конкретных местах x (матрица под названием Peak), которую я получил от сделанной мной функции. Здесь я хотел бы нарисовать линию от максимального значения каждого пика до xaxis - или, в конце концов, поместить вертикальную стрелку над каждым пиком, но я прочитал, что это довольно хлопотно, так что только вертикальная линия приветствуется. Однако, используя следующий код, я получаю «Ошибка использования строки Значение должно быть вектором числового типа». Есть предположения?В Matlab, как рисовать линии от кривой до определенной позиции xaxis?
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
Ваш код не работает. См.: [Mcve]. – excaza
Вы пытались использовать ['findpeaks'] (http://www.mathworks.com/help/signal/ref/findpeaks.html)? – EBH
Уважаемые EBH, findpeaks предлагают именно те функции, которые я хотел бы получить, но у меня нет инструментария обработки Matlab Signal. Вот почему я пытаюсь создать собственный код здесь. Я мог бы найти пик до сих пор, теперь мне просто нужно пометить их в нужном месте, в конце концов нарисуйте линию, как в findpeaks. Спасибо за вашу помощь. –