2016-09-01 5 views
-2

Ich versuche ein Signal zu plotten, das mit verschiedenen Filtern in 1 Plot gefiltert wurde. Das einzige Problem ist, dass ich das rohe Signal einmal und das unterschiedliche gefilterte Signal darauf plotten muss. Umgang mit der Farbe und der Legende wird ein Durcheinander.Plotten mehrerer Plots in 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 

So ist signal(j).seg ein Teil meines Rohsignal und filtered_signal gefilterte Signal von signal(j).seg. Ich muss das Originalsignal nur einmal und das gefilterte Signal mehrfach darüber plotten. Wie mache ich das, ohne die Legende und Farbe des Signals zu vermasseln?

+0

Leider ich es nicht richtig erwähnen, ich habe meine Frage bearbeiten, wenn Sie noch einmal anschauen kann – Aashu10

+0

Der Begriff ‚vermasselt‘ ist sehr breit. Könnten Sie auch genau das einschließen, was Sie wollen? Am besten mit einem Beispiel. –

Antwort

0

Also, wenn ich Ihre Frage richtig gelesen habe, haben Sie eine Reihe von rohen Signalsegmenten, und für jede von ihnen möchten Sie eine Reihe von verschiedenen Filtern anwenden. Damit würden Sie die Legende mag so etwas wie

  • Rohsignal mit Legende
  • Filter1
  • FILTER2
  • ...

Das Problem sein, ist, dass die Reihenfolge der Standardeinstellung Das ist die gleiche Reihenfolge wie beim Plotten, und da Sie auch verschiedene Segmente für das gleiche Signal plotten, fügt es dem Chaos hinzu.

Es gibt verschiedene Möglichkeiten, um dieses

  1. Erstellen und speichern Sie alle Signale im Voraus (in einem separaten for-Schleife). Dann plotten Sie sie in der gewünschten Reihenfolge und die Legende löst sich selbst.

  2. Shop das Grundstück Griff und ordnen sie in der gewünschten Reihenfolge durch uistack Verwendung wie vor der Legende Einstellung

Die erste Option ist sauberer. Aber wenn Sie die zweite Option wählen, sollten Sie das Plotten von rohen aufgeteilt und gefilterten Signalen

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

hier nur speichere ich den letzten Griff, aber ich denke, dass Ihr Zweck dient. Sie müssen hold on davor setzen, oder die Achsen sagen zu Plots hinzufügen

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

einfach Dann wird das filterd Signal Griffe nach oben bewegen und über ihnen die rohen Griff. Dann zeichnen Sie die Legende

uistack(filtH, 'top') 
uistack(rawH, 'top') 
legend(label)