在神经网络matlab中,下标索引必须是实正整数或逻辑数
我尝试在GUI matlab中应用神经网络函数在神经网络matlab中,下标索引必须是实正整数或逻辑数,matlab,neural-network,integer,backpropagation,Matlab,Neural Network,Integer,Backpropagation,我尝试在GUI 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 % hand
% --- 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中。
此外,最小最大值数据应包含在0-0.9范围内,因为我的数据在该范围内。先谢谢你
minmax data:
1.0054496e-001 1.0803815e-001
1.0000000e-001 1.0490463e-001
3.8269755e-001 9.0000000e-001
您正在使用已加载的
Px
索引数组minmax
。如果假设Px是1和0,则可能必须执行Px=logical(Px)
,如果Px是整数列表,则必须执行Px=int(Px)
您正在使用已加载的Px
索引数组minmax
。如果假设Px是1和0,则可能必须执行Px=logical(Px)
,如果Px是整数列表,则必须执行Px=int(Px)
您已经在此行创建了一个名为“minmax”的变量:
minmax=[min_p,max_p]代码>
但是是一个接受数组参数的Matlab函数。此函数可以很好地处理minmax.txt中的输入数据。我假设您希望在导致错误的行中使用此函数,因此请将变量“minmax”的名称更改为其他名称,例如:
minmax_p=[min_p,max_p]代码>
但是,我认为您的代码还存在一些其他问题:
1) 为什么需要处理文件“minmax.txt”中的数据?它看起来已经是最小/最大数据,如果在其上使用函数minmax()
,它不会改变。可以直接将其用作函数参数,如:
net=newff(Px,[39…
2) 您确定需要该行吗:
minmax=[min\u p,max\u p];
?它似乎没有任何用途(除了引起错误:)您在此行创建了一个名为“minmax”的变量:
minmax=[min\u p,max\u p];
但是是一个采用数组参数的Matlab函数。此函数可以与minmax.txt中的输入数据一起使用。我假设您希望在导致错误的行中使用此函数,因此请将变量“minmax”的名称更改为其他名称,例如:
minmax\u p=[min\u p,max\u p];
但是,我认为您的代码还存在一些其他问题:
1) 为什么需要处理文件“minmax.txt”中的数据?它看起来已经是最小/最大数据,如果在其上使用函数minmax()
,它不会改变。是否可以直接将其用作函数参数,如:
net=newff(Px,[39…
2) 您确定需要该行吗:
minmax=[min\u p,max\u p];
它似乎没有任何用途(除了引起错误:)你能显示“minmax.txt”的内容和行Px=load('minmax.txt')的结果吗
请检查我的更新@mhopeng。我已经上传了我的最小最大值数据,但我真的不理解您关于PxPutdisp(Px)行结果的请求
在load语句之后立即验证您是否从文本文件中获得了所需的矩阵。FYInewff
从2010年起已过时。您有什么版本的matlab?能否显示“minmax.txt”的内容以及行Px=load('minmax.txt')的结果
请检查我的更新@mhopeng。我已经上传了我的最小最大值数据,但我真的不理解您关于PxPutdisp(Px)行结果的请求
在load语句之后立即验证您是否从文本文件中获得了期望的矩阵。仅供参考newff
从2010年起已过时。您有什么版本的matlab?我尝试了您的建议,我的数据是一个整数列表(0,1-0,9)但我仍然收到相同的错误消息Px应该是什么?Px应该加载我的最小最大值数据,但由于我将最小最大值数据转换为整数(如您的建议),它包含整数数据。您可以在我上面的问题中看到我的最小最大值数据。您希望最小最大值(Px)是什么要做什么?找到最小值数据。但是我试着把它改成net=newff(Px,[3 9…但是我还是得到了相同的错误信息我试过你的建议,我的数据是一个整数列表(0,1-0,9),但是我仍然得到了相同的错误信息Px应该是什么?Px应该加载我的最小值数据,但是因为我把我的最小值数据转换成整数(根据您的建议),它包含整数数据。您可以在上面的问题中看到我的minmax数据。您希望minmax(Px)做什么?查找minmax数据。但我尝试将其更改为net=newff(Px,[3 9…但我仍然收到相同的错误消息我尝试了你的两个建议,但仍然收到相同的错误消息。我尝试在新的GUI中重写我的命令,但仍然不起作用。请帮助我:(检查newff
的语法。帮助说明:net=newff(P,t,S,TF,BTF,BLF,PF,IPF,OPF,DDF)
。您缺少输入S
。我尝试了您的两个建议,但仍然收到相同的错误消息。我尝试在新GUI中重新编写命令,但仍然无效。请帮助我:(检查newff
的语法。帮助说明:net=newff(P,t,S,TF,BTF,BLF,PF,IPF,OPF,DDF)
。您缺少输入S
。