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{:});
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