2012-11-22 42 views
0

我是新來的MATLAB並沒有多少編程經驗,所以我很堅持。如何使用這兩個函數和腳本

我需要創造條件,使我有兩個功能(由於GUI我有)的文件和腳本。我需要使用我在回調中的腳本中聲明的變量。

我的計劃是一個專家系統。首先我將規則聲明爲結構數組,然後執行算法。我不明白如何調用我的規則,這些規則應該位於我的函數文件中的腳本文件中。

更新:
我明白,但是我讀了很多東西,我仍然無法弄清楚這一點。我有規則的文件,如下所示:

rule(1).condition1='First condition'; 
rule(1).cond1ask=1; 
rule(1).condition2='Second condition'; 
rule(1).cond2ask=1; 
rule(1).conclusion='Conclusion'; 
rule(1).endmarker=1; 

並且該文件包含±50個這樣的聲明。然後我有一個非常簡單的圖形用戶界面,當我按下按鈕時,它應該運行算法。問題是:如何將文件與GUI函數和算法以及我的文件與規則結合起來?我如何從GUI文件調用規則?

這裏的GUI代碼:

% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
global rule
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
a1=rule(1).condition(1);
a1

然後我逃離我的腳本文件的GUI文件,雖然接口負載好吧,當我按下按鈕,我得到錯誤信息:

不當索引矩陣參考。

ES_21112012> pushbutton1_Callback(line 83) a1 = rule(1).condition(1)中的錯誤;

錯誤gui_mainfcn(線96) feval(varargin {:});

ES_21112012錯誤(第43行) gui_mainfcn(gui_State,varargin {:});

錯誤 @(hObject,EVENTDATA)ES_21112012( 'pushbutton1_Callback',hObject,EVENTDATA,guidata(hObject))

錯誤而評估uicontrol回調

+0

你的問題很模糊,你的描述太抽象了。我建議你訪問[此鏈接](http://www.mathworks.com/academia/student_center/tutorials/launchpad.html),以正確介紹MATLAB,嘗試再次處理該問題,並詢問具體問題if你再次陷入困境。 –

+0

我明白,但是我已經讀了很多東西,我仍然無法弄清楚。我有規則的文件,如下所示: 'rule(1).condition1 ='First condition'; 規則(1).cond1ask = 1;規則(1)。條件2 ='第二條件'; 規則(1).cond2ask = 1;規則(1).conclusion ='結論';規則(1).endmarker = 1;' 而文件包含±50個這樣的聲明。然後我有一個非常簡單的圖形用戶界面,當我按下按鈕時,它應該運行算法。 這個問題 - 如何將文件與GUI函數和我的算法以及我的文件與規則結合起來?我如何從GUI文件調用規則? –

+1

你有沒有用MATLAB寫過的東西?如果您在問題中發佈代碼的主要部分,這將有很大幫助。 –

回答

0

這聽起來像你的問題是,你沒有訪問你的回調函數中的變量'規則'。編寫圖形用戶界面時有時候會這麼做。

其中一個最普遍的方式使用圖形用戶界面時,實現全球訪問的變量是使用setappdata功能首先定義變量之後。我被你的程序的描述相混淆,但無論它是你首先要定義這個「規則」結構,你可以補充一點:

% rule = struct(); % Define your rule struct first 
setappdata(0, 'myRules', rule); 

然後,您可以檢索此變量,而不必以某種方式將它傳遞給你的回調函數作爲參數調用getappdata:

rule = getappdata(0,'myRules'); 

請注意,這不是唯一的解決方案,可能不是最適合你的方案,但沒有完全理解你的程序邏輯很難給出更具體的建議。

+0

謝謝,傑拉德,完美的工作! –

相關問題