Come leggere più righe da individuo in un testo di modifica con un valore di max= 5 in Matlab?

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

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

È stato utile?

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
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top