Wie lese ich mehrere Zeilen einzeln in einem Bearbeitungstext mit einem Wert von Max=5 in Matlab?

StackOverflow https://stackoverflow.com//questions/9695129

Frage

Ich habe in meiner GUI ein Bearbeitungstextfeld, das mehrere Zeilen mit einem Maximalwert von 5 akzeptiert, und ich kann keine Möglichkeit finden, eine Matrix mit den Eingabewerten anzuzeigen ... etwa so:

m=[m(1) m(2) m(3) m(4) m(5)];
set(handles.show,'string',m)

Wie kann ich die Werte im Berechnungsrückruf speichern? Jedes Mal, wenn ich das ausführe, erhalte ich eine Fehlermeldung.

function masa_Callback(hObject, eventdata, handles)
% hObject    handle to masa (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
 %h_edit is the handle to the edit box
m=str2double(get(hObject,'String'));

function calculate_Callback(hObject, eventdata, handles)
% hObject    handle to agregarm (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
f = str2double(get(h_fuerza,'string')); %h_edit is the handle to the edit box

m = str2double(get(h_masa,'string')); %h_edit is the handle to the edit box

[row, column] = size(m);

for i = 1:row 
eval(m{i,:}) %evaluate each line as in MATLAB command prompt
end

Ich habe masa_callback, rigidez_callback und fuerza_callback. Ich versuche, die Benutzereingaben im Bearbeitungstextfeld zu lesen ... also möchte ich diese Werte als Array an berechne_callback übergeben, um bestimmte Operationen entsprechend dem Wert von n ... auszuführen Der Fehler, den ich erhalte, ist, dass, wenn ich zum Beispiel n=2 zwei Werte in der Spalte „masa_callback“ und „fuerza_callback“ und drei Werte in „rigidez_callback“ hinzufüge, diese Werte an den Fall n==2 übergeben werden und wenn mein Programm versucht, anzuzeigen Zum Beispiel die Matrix m, sie zeigt alle Werte an, die ich zusammen in den Räumen von m(1) und m(2) eingebe...ich möchte nur jeden getrennten Wert einfügen, nicht zusammengefügt!...Wie kann ich das beheben? Ich glaube, das ist ein Array und eine Schleife, aber ich weiß nicht, wie und wie ich die Array-Werte an die Gleichung übergeben soll, um Operationen (als Zahlen) auszuführen und sie als Zeichenfolge anzuzeigen

War es hilfreich?

Lösung

Um das Problem mit der Eingabe zu beheben (vorausgesetzt, Sie haben Ihre Daten in einem Zellenarray und so weiter). handles.show bezieht sich auf ein Textfeld), verwenden strvcat:

someCellArray = {'a','b'};
m = strvcat(someCellArray{:});
set(handles.show,'string',m)

Ihr Problem ergibt sich aus der Zeile

m = str2double(get(h_masa,'string'));

Sie möchten die Zeichenfolge nicht in Double konvertieren.

Seit der String Damit die Eigenschaft tatsächlich eine mehrzeilige Zeichenfolge zurückgibt, müssen Sie Ihren Code wie folgt ändern:

m = get(h_masa,'String');

nRows = size(m,1);

for iRow = 1:nRows
eval(m(i,:));
end
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top