Come leggere più righe da individuo in un testo di modifica con un valore di max= 5 in Matlab?
-
13-12-2019 - |
Domanda
Ho nella mia GUI un campo di testo Modifica che accetta più righe con un valore massimo di 5, e non riesco a trovare un modo per visualizzare una matrice con i valori di input ... qualcosa del genere:
m=[m(1) m(2) m(3) m(4) m(5)];
set(handles.show,'string',m)
.
Come posso memorizzare i valori nel callback callback ...every Time I esecuzione di questo, mi porta un errore ..
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
.
Ho il masa_callback, rigidez_callback e fueroso_callback I tentativo di leggere l'ingresso utente nella casella di testo Modifica ... quindi voglio passare tali valori al calcolo_callback come array per eseguire determinate operazioni in base al valore di n. .. L'errore che sto ottenendo è che quando per esempio n= 2, aggiungo due valori nella colonna Masa_Callback e Fuerza_Callback e 3 valori nel rigidez_callback, tali valori sono passati alla custodia n== 2 e quando il mio programma tenta di visualizzare ad esempio la matrice M, visualizza tutti i valori in cui entri insieme negli spazi di M (1) e M (2) ... Voglio mettere solo ciascun valore separato, non uniti! ... Come Posso risolvere questo, io credo che sia con un array e un anello ma non so come e come passare i valori dell'array all'equazione per eseguire operazioni (come numeri) e visualizzarlo come stringa
Soluzione
Per risolvere il problema con l'ingresso (supponendo di avere i dati in alcuni array di celle e che handles.show
si riferisce a una casella di testo), utilizzare strvcat
:
someCellArray = {'a','b'};
m = strvcat(someCellArray{:});
set(handles.show,'string',m)
.
Il tuo problema deriva dalla linea
m = str2double(get(h_masa,'string'));
Non si desidera convertire la stringa per raddoppiare.
Poiché la proprietà String
restituisce effettivamente una stringa multilinea, è necessario modificare il codice come questo:
m = get(h_masa,'String');
nRows = size(m,1);
for iRow = 1:nRows
eval(m(i,:));
end
.