Matlab で Max=5 の値を使用して編集テキスト内の複数行を個別に読み取るにはどうすればよいですか?
-
13-12-2019 - |
質問
私の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 に 2 つの値を追加し、rigidez_callback に 3 つの値を追加すると、それらの値がケース n==2 に渡され、プログラムが表示しようとすると、たとえば、行列 m では、入力したすべての値が m(1) と m(2) のスペースに一緒に表示されます...結合せずに、それぞれの分離された値のみを配置したいのですが...どうすれば修正できますか?これは配列とループだと思いますが、配列の値を方程式に渡して演算(数値として)を実行し、それを文字列として表示する方法がわかりません
解決
入力の問題を解決するには (データが何らかの cell 配列にあり、 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