Как прочитать несколько строк по отдельности в редактируемом тексте со значением Max = 5 в Matlab? - PullRequest
0 голосов
/ 14 марта 2012

У меня в графическом интерфейсе есть поле для редактирования текста, которое принимает несколько строк с максимальным значением 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 значения в rigidez_callback, эти значения передаются в случай n == 2, и когда моя программа пытается отобразить, например, матрицу m, она отображает все значения, которые я ввожу вместе, в пространствах m (1) и m (2) ... я хочу поместить только каждое отдельное значение, не объединенное вместе! ... Как Могу ли я это исправить, я считаю, что это массив и цикл, но я не знаю, как и как передать значения массива в уравнение для выполнения операций (в виде чисел) и отобразить его в виде строки

1 Ответ

0 голосов
/ 14 марта 2012

Чтобы устранить проблему с вводом (если у вас есть данные в некотором массиве ячеек, а 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
...