在神经网络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

我尝试在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
% 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。我已经上传了我的最小最大值数据,但我真的不理解您关于PxPut
disp(Px)行结果的请求
在load语句之后立即验证您是否从文本文件中获得了所需的矩阵。FYI
newff
从2010年起已过时。您有什么版本的matlab?能否显示“minmax.txt”的内容以及行
Px=load('minmax.txt')的结果
请检查我的更新@mhopeng。我已经上传了我的最小最大值数据,但我真的不理解您关于PxPut
disp(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