0

4 つの編集ボックスと 1 つのプッシュボタンを備えた Matlab GUI プログラムを開発しました。私のアプリケーションは、Matlab ソフトウェアで実行すると正しく動作しますが、exe ファイル (スタンドアロン) に変換した後、プッシュボタンが機能しません。つまり、「結果」編集ボックスに出力が表示されません。だから問題は何ですか?ここに私のプッシュボタンコードがあります:

function btnCal_Callback(hObject, eventdata, handles)
a=str2num(get(handles.txbLow,'string'));
b=str2num(get(handles.txbHi,'string'));
f=get(handles.txbForm,'string');
x=0.5*((b-a)*(-1*(3/5)^0.5)+b+a);
g=subs(f,'x',x);
sum=(g)*(5/9);
x=0.5*(b+a);
g=subs(f,'x',x);
sum=sum+(g)*(8/9);
x=.5*((b-a)*((3/5)^.5)+b+a);
g=subs(f,'x',x);
sum=sum+g*(5/9);
result=sum*((b-a)/2);
set(handles.txbResult,'string',result);
4

2 に答える 2

0

まず、私は少し混乱しています

result=sum*((b-a)/2);   % "result" is numeric
set(handles.txbResult,'string',result);   % "result" should be string

次に、ヒントとして。デプロイされたコードを「デバッグ」するには、cmd から exe を起動してみてください。この場合、いくつかのメッセージが表示され、役立つ場合があります。

于 2013-01-15T11:27:54.253 に答える
0

「結果」は double、char、または cell のいずれかである必要があります。たとえば、これを行うことができます

set(handles.txbResult,'String',char(result);

ただし、Macで非常によく似たコードでまったく同じ問題が発生しました。アプリケーションは、Matlab で「実行」を介して実行すると非常にうまく動作しますが、それをstandalone.app にコンパイルすると、ボタンを押したときにこのエラー音が聞こえ、他に何も起こりません。

「結果」変数を「グローバル」として設定しようとすると、私が書いた別のプログラム(非常に単純な「a + bを計算する」こと)でこの問題を解決するのに役立ちましたが、言及された少し複雑なコード(2入力ではなく3入力)では解決できませんでしたおよび 1 の代わりに 3 つの出力)。

動作している非常に単純なコード:

function pushbutton1_Callback(hObject, eventdata, handles) %the button to push
...some code...
global statText;
set(statText,'String',char(output));

function text1_CreateFcn(hObject, eventdata, handles) %the outputfield
global statText;
statText = hObject;
于 2013-07-31T13:03:57.100 に答える