2016-12-15 4 views
0

У меня есть шумный периодический сигнал в Matlab, который я извлечил из пиков с помощью [peak loc]=findpeaks(signal). Однако нереальные выбросы также находятся внутри массива peak. Я установил минимальные и максимальные значения для peak и поэтому получаю более короткий массив peak. Теперь я хотел бы отметить это более короткое подмножество оригинала peak в оригинале plot(loc,peak), где я получил бы ошибку, так как loc сохранил свою первоначальную длину.Mark 1D-массив в 2D-графике

Мои вопросы:

  • Есть ли способ в моде в container.map или нечто подобное, что позволяет адаптировать loc к peak с консистенцией из Loc-пик заданий?

    • Как я могу альтернативно построить укороченный массив peak на исходный участок сигнала?

Спасибо большое!

ответ

2

Я думаю, вы можете решить проблему с помощью следующего кода:

[peak,loc] = findpeaks(signal); 
max_thr = 2; 
min_thr = 1e-5;  
mask = peak>min_thr&peak<max_thr; 
plot(loc(mask),peak(mask)) 

Является ли это то, что вы хотите?

+0

Ничего себе спасибо, не знал об этой маскирующей идее! Tesekkürler! –

+0

Как я могу прочитать дальше эту идею? Есть ли термин для этой техники? –

+1

Rica ederim :) На самом деле это очень распространенный подход к использованию идеи маски в MATLAB. Я рекомендую вам прочитать http://stackoverflow.com/questions/32379805/linear-indexing-logical-indexing-and-all-that этот сайт для получения дополнительной информации об индексировании. –