0

我的 gui 中有一个编辑文本字段,该字段接受最大值为 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 中添加了两个值,在rigidez_callback 中添加了 3 个值,这些值被传递给案例 n==2,并且当我的程序尝试显示例如矩阵 m,它显示我在 m(1) 和 m(2) 的空间中一起输入的所有值...我只想将每个单独的值放在一起,而不是连接在一起!...我该如何解决这个,我相信这是一个数组和一个循环,但我不知道如何以及如何将数组值传递给方程以执行操作(作为数字)并将其显示为字符串

4

1 回答 1

0

要解决输入问题(假设您的数据在某个元胞数组中,并且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
于 2012-03-14T03:15:17.527 回答