MATLAB在BP神经网络训练时出现错误,说未定义与"struct"类型的输入参数相对应的函数”train“

fid=fopen('shiliin.txt','r');fid1=fopen('shiliout.txt','r');[p,count]=fscanf(fid,'%g%... fid=fopen('shiliin.txt','r');
fid1=fopen('shiliout.txt','r');
[p,count]=fscanf(fid,'%g %g',[6 inf]);
[t,count]=fscanf(fid1,'%g %g',[1 inf]);
fclose(fid);
fclose(fid1);
t=(t/10)*2-0.1;
s1=20;
s2=20;
new=newff(minmax(p),[s1,s2,1],{'logsig','logsig','logsig'},'traingdx');
警告: NEWFF used in an obsolete way.
> In obs_use at 17
In newff>create_network at 126
In newff at 101
See help for NEWFF to update calls to the new argument list.

>> net.performFcn='sse';
net.trainParam.goal=0.001;
net.trainParam.show=25;
net.trainParam.epochs=2000;
net.trainParam.mc=0.9;
[net,tr0]=train(net,p,t);
未定义与 'struct' 类型的输入参数相对应的函数 'train'。

不明白哪里错了.。求解答!!
展开
 我来答
依然特雷西sky
高粉答主

2020-01-22 · 繁杂信息太多,你要学会辨别
知道答主
回答量:1511
采纳率:33%
帮助的人:59.2万
展开全部

1、实现%% 以函数的形式训练神经网络命令。

2、实现%P为输入矢量的方法命令。

3、实现%T为目标矢量的命令。

4、实现%创建一个新的前向神经网络的命令。

5、实现%调用算法训练BP网络的命令。

6、其他设置命令。

meng2235
推荐于2016-09-17 · TA获得超过1.4万个赞
知道大有可为答主
回答量:4585
采纳率:74%
帮助的人:2993万
展开全部

主要问题出在txt样本上,数据之间应以空格间隔,而不能是制表符,否则fcanf不能正常读取。


matlab中的fscanf的用法如下:


A=fscanf(fid,format)
[A, count]=fscanf(fid,format,size)
[A, count]=fscanf(fid,format,size)


个人感觉用的最多的是 这样的形式:
data = fscanf(fid,format,size);
其中data为读取内容的数组,他的大小由size决定。size是一个[m n]的向量,m为行,n为列(注意,这里读取的顺序是按列优先排列的,不明白的话可以看下面的例子),若n取inf表示读到文件末尾。fid为fopen打开文件的返回值,format是格式化参数(像printf、scanf)。


举个小例子:
路径+文件名:d:\moon.txt
内容:

13,1,3.4
3,2.1,23
1,12,2
4,5.4,6
现在为了读取moon中的数据存在一个数组里,可以用如下方法

fid=fopen('d:\moon.txt');data_1 =fscanf(fid,'%f,%f,%f',[3,inf]) ;%这里得用单引号
data_2 =fscanf(fid,'%f,%f,%f',[2,inf])
data_3 =fscanf(fid,'%f,%f,%f',[2,2])
fclose(fid);

这时data_1, data_2, data_3分别是一个数组,其内容分别如下:
data_1

13 3 1 4
1 2.1 12 5.4
4 23 2 6

data_2

13 3.4 2.1 1 2 4

1 3 23 12 4,5 6
data_3

13 3.4
1 3

由此可见,读数据的时候,从多维数组的水平方向,一个一个读取,传递给新的数组时,从列方向优先。


matlab中函数fscanf在文件读取方面的实例如下:

从文件中有格式地读数据 

fscanf
语法1:[a,count]=fscanf(fid,format,size)
根据指定的格式从fid
文件按照格式format读出数据并按size的格式放入内存。
a :读出的数据放入内存的变量名
count :返回值。0:失败、n>0:成功,n是读出数据个数。
fid :文件号
size :a的数据的格式
N : 列向量
inf : 读出文件全部数据
[M,N] : 读出数据以M*N的格式放入变量名a内

format :读出数据的格式

format是字符形式,与C语言基本相同。字符形式中有“%”与字符集(d,i,o,u,x,e,f,g,s,c,…)搭配构成。
如: %s:单字符读
     %c:读space字符
例:

s=fscanf(fid,'%s') 返回一个字符。
a=fscanf(fid,']') 返回一个五位十进制整数。

size是一个[m n]的向量,m为行,n为列(注意,这里读取的顺序是按列优先排列的,不明白的话可以看下面的例子),若n取inf表示读到文件末尾。

fid为fopen打开文件的返回值,

format是格式化参数(像printf、scanf)。

举个小例子:

内容:

13,   1,    3.4

3,    2.1,  23

 1,    12,   2

4,    5.4,  6

现在为了读取001中的数据存在一个数组里,可以用如下方法

fid=fopen('001.txt');
data=fscanf(fid,'%f,%f,%f',[3,inf]) ;%这里得用单引号
fclose(fid);

这时data中的数据如下:

13    3     1     4

1     2.1   12    5.4

3.4   23    2     6

追问
哈哈哈。。。。还是你回答的额。。。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
narutomst
2019-07-20 · TA获得超过114个赞
知道答主
回答量:130
采纳率:54%
帮助的人:26.6万
展开全部
new=newff(minmax(p),[s1,s2,1],{'logsig','logsig','logsig'},'traingdx');
改为
net=newff(minmax(p),[s1,s2,1],{'logsig','logsig','logsig'},'traingdx');
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式