Как читать несколько строк по отдельности в тексте редактирования со значением Max = 5 в Matlab?

У меня есть в моем графическом интерфейсе текстовое поле редактирования, которое принимает несколько строк с максимальным значением 5, и я не могу найти способ отобразить матрицу с входными значениями... что-то вроде этого:

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

как я могу сохранить значения в обратном вызове вычисления.. каждый раз, когда я запускаю это, это приносит мне ошибку..

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

У меня есть masa_callback,rigidez_callback и fuerza_callback. Я пытаюсь прочитать пользовательский ввод в текстовом поле редактирования... поэтому я хочу передать эти значения в calculate_callback в виде массива для выполнения определенных операций в соответствии со значением n... ошибка, которую я получаю, заключается в том, что когда, например, n = 2, я добавляю два значения в столбец masa_callback и fuerza_callback и 3 значения в hardez_callback, эти значения передаются в случае n == 2, и когда моя программа пытается отобразить например, матрица m, она отображает все значения, которые я ввожу вместе в пространствах m(1) и m(2)... я хочу поместить только каждое отдельное значение, а не объединенное вместе!... Как я могу исправить это, я считаю, что это массив и цикл, но я не знаю, как и как передать значения массива в уравнение для выполнения операций (в виде чисел) и отобразить его в виде строки


person Arturo Guerrero    schedule 14.03.2012    source источник


Ответы (1)


Чтобы устранить проблему с вводом (при условии, что ваши данные находятся в каком-то массиве ячеек и что handles.show относится к текстовому полю), используйте strvcat:

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

Ваша проблема связана с линией

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

Вы не хотите преобразовывать строку в двойную.

Поскольку свойство String на самом деле возвращает многострочную строку, вам нужно изменить свой код следующим образом:

m = get(h_masa,'String');

nRows = size(m,1);

for iRow = 1:nRows
eval(m(i,:));
end
person Jonas    schedule 14.03.2012