2016-02-23 37 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

相关问题