2016-09-01 4 views
-2

Я пытаюсь построить сигнал, который был отфильтрован с различными фильтрами в 1 сюжете. Единственная проблема заключается в том, что я должен нарисовать необработанный сигнал один раз и на него отфильтрованный сигнал. обработка цвета и легенда становится беспорядком.Закладка нескольких графиков в matlab

label{1} = 'raw_Signal' 
for i = 1:NumOfFilter 
    f = FilterClass(); 
    f.fc = x; % fc changes for each filter 
    for j = 1: length(Signal) % every signal will have multiple segments 
     filtered_signal = f.eval(signal(j).seg) 
     plot(handles.axes2, signal(j).time,signal(j).seg,signal(j).time,filtered_signal) 
     hold(handles.axes2,'on') 
    end 
label{i+1} = 'filter_1' 
end 

Так signal(j).seg является частью моего необработанного сигнала и filtered_signal отфильтрованного сигнала signal(j).seg. Мне нужно нарисовать исходный сигнал только один раз, а отфильтрованный сигнал - несколько раз. как я могу это сделать, не испортив легенду и цвет сигнала.

+0

К сожалению я не упомянул это правильно, я сделал редактировать мой вопрос, если вы можете смотреть на него снова – Aashu10

+0

термин «баловаться» очень широк. Не могли бы вы также включить именно то, что вы хотите? Предпочтительно с примером. –

ответ

0

Итак, если я правильно прочитал ваш вопрос, у вас есть куча сегментов необработанных сигналов, и для каждого из них вы хотите применить набор различных фильтров. Поступая таким образом вы хотели бы легенда быть что-то вроде

  • необработанного сигнала
  • Filter1
  • Filter2
  • ...

Проблемы с легендой в том, что порядок по умолчанию это то же самое, что и порядок построения графика, и поскольку вы также занимаете разные сегменты для одного и того же сигнала, он добавляет к беспорядку.

Существуют различные способы вокруг этого

  1. создать и хранить все сигналы заранее (в отдельном для цикла). Затем нарисуйте их в том порядке, в котором вы хотите, и легенда решает сам.

  2. магазин участок ручки и расположить их в нужном порядке с помощью uistack перед установкой легенды

Первый вариант чище. Но если вы выбираете второй вариант, вы должны разделить заговоры сырья и отфильтрованных сигналов

rawH = plot(handles.axes2, signal(j).time,signal(j).seg) 
filtH(i) = plot(handles.axes2,signal(j).time,filtered_signal, 'Color', FiltColor{i}) 

Здесь я только хранить последнюю ручку, но я думаю, что служит вашей цели. Вам нужно установить hold on до этого, или сказать оси, чтобы добавить участки

set(handles.axes2, 'NextPlot', 'add') 

Затем просто переместите сигнал filterd ручки к верхней части и над ними сырой ручкой. Затем сюжет легенды

uistack(filtH, 'top') 
uistack(rawH, 'top') 
legend(label) 
Смежные вопросы