2016-02-23 38 views
1

我試圖在GUI matlab中應用神經網絡函數。下標指數必須是神經網絡中的實數正整數或邏輯值matlab

% --- Executes on button press in pushbutton1. 
function pushbutton1_Callback(hObject, eventdata, handles) 
% 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) 
P = load('data.mat','Z'); 

nR = size(P.Z,2); 
min_P = min(P.Z,[],2); 
max_P = max(P.Z,[],2); 

minmax = [min_P, max_P]; 
P = ((0.8*(P.Z - repmat(min_P,1, nR))./repmat(max_P - min_P,1,nR))) + 0.1; 


Px = load('minmax.txt'); 

net = newff(minmax(Px),[3 9 4],{'logsig','tansig','logsig'},'trainrp'); 

net.IW{1,1} = load('bobot1.txt'); 
net.b{1} = load('bias1.txt'); 

net.LW{2,1} = load('bobot2'); 
net.b{2} = load('bias2'); 

net.LW{3,2} = load('bobot3'); 
net.b{3} = load('bias3.txt'); 

[Y] = sim(net,P); 
result = round(Y); 

sum_result= sum(result); 

normal = (sum(sum_result(:) == 0)); 
set(handles.edit1,'String',num2str(normal)); 

,但我不斷收到此錯誤:

??? Subscript indices must either be real positive 
integers or logicals. 

Error in ==> test>pushbutton1_Callback at 95 
net = newff(minmax(Px),[3 9 
4],{'logsig','tansig','logsig'},'trainrp'); 

Error in ==> gui_mainfcn at 96 
     feval(varargin{:}); 

Error in ==> test at 42 
    gui_mainfcn(gui_State, varargin{:}); 

Error in ==> 
@(hObject,eventdata)test('pushbutton1_Callback',hObject,eventdata,guidata(hObject)) 


??? Error while evaluating uicontrol Callback 

命令工作正常的訓練和測試環節,我不知道爲什麼它在GUI發生的事情。 此外minmax數據應該包含在0-0.9範圍內的數據,因爲我的數據在該範圍內。先謝謝你。

minmax data: 
    1.0054496e-001 1.0803815e-001 
    1.0000000e-001 1.0490463e-001 
    3.8269755e-001 9.0000000e-001 
+0

你可以顯示'minmax.txt'的內容和行'Px = load('minmax.txt');' – mhopeng

+0

Plese檢查我的更新@mhopeng。我已經上傳了我的minmax數據,但我並不真正瞭解您對Px –

+0

行的結果的請求,請立即在加載語句後加上'disp(Px)',以驗證您是否從文本中獲得了期望的矩陣文件。 – mhopeng

回答

0

您索引陣列minmaxPx,你已經加載。如果它應該是1和0,則可能必須執行Px = logical(Px),或者如果Px是整數列表,則可以執行Px = int(Px)

+0

我試過你的建議,我的數據是整數列表(0,1-0,9),但我仍然得到相同的錯誤信息 –

+0

Px應該是什麼? –

+0

Px應該加載我的minmax數據,但由於我將我的minmax數據轉換爲整數(作爲您的建議),它包含整數數據。你可以在我的問題上面看到我的minmax數據 –

0

您已經創建了一個稱爲「最小最大」這一行變量:

minmax = [min_P, max_P];

"minmax"是一個Matlab函數,它接受一個數組參數。這個函數可以很好地處理來自minmax.txt的輸入數據。我假設你想在引起錯誤的行使用此功能,所以更改變量「最小最大」別的東西的名稱,例如:

minmax_P = [min_P, max_P];

不過,我覺得有一些你的代碼的其他問題:

1)爲什麼你需要處理文件「minmax.txt」中的數據?它已經看起來像是最小/最大數據,並且如果您使用功能minmax()就不會改變。你可以使用它作爲函數參數直接,如:

net = newff(Px,[3 9...

2)你確定你所需要的行:

minmax = [min_P, max_P];?它似乎沒有任何目的(除了導致錯誤:)

+0

我嘗試了你的兩個建議,但仍然收到相同的錯誤消息。我試圖重寫我的命令,即使在新的GUI中嘗試過,但它仍然無法工作。 請幫助我:( –

+0

檢查'newff'的語法,幫助說:'net = newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)'。輸入'S'。 – mhopeng

相關問題