2016-05-03 15 views
0

Ich versuche, eine Handlung zu machen, je nachdem, welche Werte verfügbar sind meine aktuellen Code zu zeichnen, wie folgt aussieht:MATLAB: Strings anhängen Grundstück machen

clk=handles.metricdata.clk; 
y=handles.metricdata.y; 
x=handles.metricdata.x; 
input_signal=handles.metricdata.input_signal; 
i=1; 
if strcmp(handles.metricdata.currentout,'checked')==1 
    p_out{i}='clk, y'; 
    i=i+1; 
end 
if strcmp(handles.metricdata.voltageout,'checked')==1 
    p_out{i}='clk, x'; 
    i=i+1; 
end 

if strcmp(handles.metricdata.voltagein,'checked')==1 
    p_out{i}='clk, input_signal'; 
    i=i+1; 
end 

Output_Plot=strjoin(p_out,', '); 
Output_Plot 
plot(Output_Plot); 

Aber die Handlung fuction kann nicht verstehen, die Eingabe:

Error using plot 
Invalid first data argument. 

Error in RTD_Simulator_Outputs>Run_Plot (line 287) 
plot(Output_Plot); 

Die Ausgabe von Output_Plot wie diese aussieht, wenn alle Variablen vorhanden sind:

clk, y, clk, x, clk, input_signal

EDIT: Problem ist dank stolydandhonour und BillBokeey gelöst! :)

geht hier ein funktionierendes Beispiel mit Zufallsdaten als Referenz:

handles.metricdata.currentout='checked'; 
handles.metricdata.voltageout='checked'; 
handles.metricdata.voltagein='checked'; 
clk=[0 0 0.1 0.2 0.1 0 0]; 
y =[1 1 1.1 0.9 0.8 1 1]; 
x =[0 0.1 0 0.1 0.1 0 0.1]; 
input_signal=[0 0.1 0 0.1 0.1 0 0.1]; 
i=1; 
if strcmp(handles.metricdata.currentout,'checked')==1 
    p_out{i}=clk; 
    i=i+1; 
    p_out{i}=y; 
    i=i+1; 
end 
if strcmp(handles.metricdata.voltageout,'checked')==1 
    p_out{i}=clk; 
    i=i+1; 
    p_out{i}=x; 
    i=i+1; 
end 

if strcmp(handles.metricdata.voltagein,'checked')==1 
    p_out{i}=clk; 
    i=i+1; 
    p_out{i}=input_signal; 
    i=i+1; 
end 

plot(p_out{:}); 
+0

vorsah, was Sie Stolpern bedeutet, dass eine Zeichenfolge nicht mit einer Argumentliste übereinstimmt. Warum nicht einzelne "Plots" in jedem "if" -Block machen, natürlich mit einem "Festhalten", um ein Löschen der Achsen zu verhindern? Alternativ, wenn Sie Ihr Zellen-Array mit den tatsächlichen Variablen wie 'p_out {end + 1} = clk; p_out {end + 1} = y; 'usw. dann können Sie' plot (p_out {:}) 'aufrufen. – zeeMonkeez

Antwort

0

Sie passieren derzeit für die Plot-Funktion ein Koma getrennte Liste von Strings, die es aus Bestehen des Koma getrennt ist anders Liste der Variablen, die es braucht.

Eine Koma-getrennte Liste von Variablen erhalten Sie, indem Sie den Spaltenoperator : aus einer Zelle verwenden, die Ihre Variablen enthält. Ein erster Schritt, um Ihren Code zu korrigieren, würde nach dem Vorbild der folgenden sein:

clk=handles.metricdata.clk; 
y=handles.metricdata.y; 
x=handles.metricdata.x; 
input_signal=handles.metricdata.input_signal; 
i=1; 
if strcmp(handles.metricdata.currentout,'checked')==1 
    p_out{i}=clk; 
    i=i+1; 
    p_out{i}=y; 
    i=i+1; 
end 
if strcmp(handles.metricdata.voltageout,'checked')==1 
    p_out{i}=clk; 
    i=i+1; 
    p_out{i}=x; 
    i=i+1; 
end 

if strcmp(handles.metricdata.voltagein,'checked')==1 
    p_out{i}=clk; 
    i=i+1; 
    p_out{i}=input_signal; 
    i=i+1; 
end 


plot(p_out{:}); 

Dies sollte funktionieren, wenn auch nicht auf Ihrem spezielles Beispiel geprüft werden, da Sie nicht ein Minimal, Complete, and Verifiable example

Verwandte Themen