2016-09-01 118 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是我的原始信號和signal(j).segfiltered_signal濾波後的信號的一部分。我只需要將原始信號繪製一次,並在其上多次繪製濾波信號。我如何做到這一點,而不會搞亂信號的圖例和顏色。

+0

對不起,我沒有正確地提到它,我做編輯我的問題,如果你可以看看它再次 – Aashu10

+0

術語「搞亂」是非常廣闊的。你能否也包括你想要的東西?最好用一個例子。 –

回答

0

所以如果我正確地閱讀你的問題,你有一堆原始信號片段,並且他們每個人都喜歡應用一組不同的過濾器。通過這樣做,你想的傳說是這樣的

  • 原始信號
  • 過濾器1
  • FILTER2
  • ...

與傳說的問題是,默認情況下,爲了與繪圖順序相同,並且由於您還爲同一信號繪製了不同的分段,所以會增加混亂。

周圍有此

  1. 不同的方式創建和所有的信號存儲在預先(在一個單獨的for循環)。然後按照你想要的順序繪製它們,並且圖例自己解決。

  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)