¿Cómo leer varias líneas por individuo en un texto de edición con un valor de Max=5 en Matlab?

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

Pregunta

Tengo en mi interfaz gráfica de usuario un campo de edición de texto que acepta múltiples líneas con un valor máximo de 5, y no puedo encontrar una manera de mostrar una matriz con los valores de entrada... algo como esto:

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

¿Cómo puedo almacenar los valores en la devolución de llamada de cálculo? Cada vez que ejecuto esto, aparece un error.

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

Tengo masa_callback, rigidez_callback y fuerza_callback. Intento leer la entrada del usuario en el cuadro de edición de texto... así que quiero pasar esos valores a calcula_callback como una matriz para realizar ciertas operaciones de acuerdo con el valor de n... El error que estoy recibiendo es que cuando por ejemplo n=2, agrego dos valores en la columna masa_callback y fuerza_callback y 3 valores en la rigidez_callback, esos valores se pasan al caso n==2, y cuando mi programa intenta mostrar por ejemplo, la matriz m, muestra todos los valores que ingreso juntos en los espacios de m(1) y m(2)... ¡Quiero poner solo cada valor separado, no unido!... ¿Cómo puedo solucionarlo? Esto, creo que es con una matriz y un bucle, pero no sé cómo ni cómo pasar los valores de la matriz a la ecuación para realizar operaciones (como números) y mostrarlos como una cadena.

¿Fue útil?

Solución

Para solucionar el problema con la entrada (suponiendo que tenga sus datos en alguna matriz de celdas y que handles.show se refiere a un cuadro de texto), utilice strvcat:

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

Tu problema surge de la línea.

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

No desea convertir la cadena a doble.

desde el String La propiedad en realidad devuelve una cadena de varias líneas, debes modificar tu código de esta manera:

m = get(h_masa,'String');

nRows = size(m,1);

for iRow = 1:nRows
eval(m(i,:));
end
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top