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列に2つの値を追加し、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'));

文字列を double に変換したくありません。

プロパティは実際には複数行の文字列を返すためString、次のようにコードを変更する必要があります。

m = get(h_masa,'String');

nRows = size(m,1);

for iRow = 1:nRows
eval(m(i,:));
end
于 2012-03-14T03:15:17.527 に答える