MATLAB! 请问帮我解释一下这个程序的意思吧,希望能详细解释一下每句的意思!
closeallclearclcIN=1:61;sr=zeros(1,61);OUT=sr;[X,minx,maxx,T,mint,maxt]=premnmx(IN,OU...
close all
clear
clc
IN=1:61;
sr=zeros(1,61);
OUT=sr;
[X,minx,maxx,T,mint,maxt]=premnmx(IN,OUT);
q=50;
q1=0;
q0=70;
while(q1<q)
q=q0;
[M,N]=size(X);
[L,N]=size(T);
net=newff(minmax(X),[q,L],{'tansig','purelin'},'trainlm');
net.trainParam.lr=0.01;
net.trainParam.epochs=2000;
net.trainParam.goal=1e-5;
[net,tr]=train(net,X,T);
Y=sim(net,X);
Y=postmnmx(Y,mint,maxt);
%灰色关联分析,调整网络隐层节点
p=0.3;
e=0.3;
an=repmat(net.b{1},1,N);
op=tansig(net.iw{1,1}*X+an);
op1=op';
T0=T';
T1=repmat(T0,1,q);
DIF=abs(T1-op1);
MIN=min(min(DIF));
MAX=max(max(DIF));
Si=(MIN+p*MAX)./(DIF+p*MAX);
ri=sum(Si)/N;
D=find(ri>=e);
[q0,q1]=size(D);
q0=q1;
end
q0;
ri;
D;
q=q1;
%进行测试
PRD=1:61;
PRD=PRD';
P=tramnmx(PRD,minx,maxx);
TNEW=sim(net,P');
TNEW=postmnmx(TNEW,mint,maxt);
t=1:61;
YY=OUT;
YC=TNEW;
figure
plot(t,YY,'r*',t,YC,'b--+')
RES0=YC-YY;
res0=RES0./YY;
figure
bar(t,res0)
我想知道从这个程序表示的神经网络 1、是几层网络?2、隐藏层由几个神经元组成?3、输入神经元个数 输出神经元个数是多少?4、网络结构为什么?
这是个灰色和BP的组合程序,我用它来预测顾客数量的,请高人整体掌握帮我解释解释一下吧。还有这个图我不了解,看不太懂,也请顺便帮我解释一下吧。对了,http://zhidao.baidu.com/question/245887304.html这有我的另外一个问题,也是关于MATLAB的,要是可以一起解释了,分都给了。谢谢了,解释尽量详细点啊! 展开
clear
clc
IN=1:61;
sr=zeros(1,61);
OUT=sr;
[X,minx,maxx,T,mint,maxt]=premnmx(IN,OUT);
q=50;
q1=0;
q0=70;
while(q1<q)
q=q0;
[M,N]=size(X);
[L,N]=size(T);
net=newff(minmax(X),[q,L],{'tansig','purelin'},'trainlm');
net.trainParam.lr=0.01;
net.trainParam.epochs=2000;
net.trainParam.goal=1e-5;
[net,tr]=train(net,X,T);
Y=sim(net,X);
Y=postmnmx(Y,mint,maxt);
%灰色关联分析,调整网络隐层节点
p=0.3;
e=0.3;
an=repmat(net.b{1},1,N);
op=tansig(net.iw{1,1}*X+an);
op1=op';
T0=T';
T1=repmat(T0,1,q);
DIF=abs(T1-op1);
MIN=min(min(DIF));
MAX=max(max(DIF));
Si=(MIN+p*MAX)./(DIF+p*MAX);
ri=sum(Si)/N;
D=find(ri>=e);
[q0,q1]=size(D);
q0=q1;
end
q0;
ri;
D;
q=q1;
%进行测试
PRD=1:61;
PRD=PRD';
P=tramnmx(PRD,minx,maxx);
TNEW=sim(net,P');
TNEW=postmnmx(TNEW,mint,maxt);
t=1:61;
YY=OUT;
YC=TNEW;
figure
plot(t,YY,'r*',t,YC,'b--+')
RES0=YC-YY;
res0=RES0./YY;
figure
bar(t,res0)
我想知道从这个程序表示的神经网络 1、是几层网络?2、隐藏层由几个神经元组成?3、输入神经元个数 输出神经元个数是多少?4、网络结构为什么?
这是个灰色和BP的组合程序,我用它来预测顾客数量的,请高人整体掌握帮我解释解释一下吧。还有这个图我不了解,看不太懂,也请顺便帮我解释一下吧。对了,http://zhidao.baidu.com/question/245887304.html这有我的另外一个问题,也是关于MATLAB的,要是可以一起解释了,分都给了。谢谢了,解释尽量详细点啊! 展开
4个回答
展开全部
close all %关闭开着的文件或程序
clear %清除所有变量
clc %清除commond命令窗口的内容
IN=1:61; %给IN赋值,[1 2 3 4 5 6 … 59 60 61]
sr=zeros(1,61); % sr是1×61的零矩阵,[0 0 0 0 0 … 0]
OUT=sr; % 把矩阵sr赋值给OUT
[X,minx,maxx,T,mint,maxt]=premnmx(IN,OUT); % 对输入和输出函数进行归一化处理,其中:IN为输入数据,OUT为输出数据,X为输入数据转换成的标准数据,minx为输入的最小数据,maxx为输入的最大数据,T为输出数据转换成的标准数据,mint为输出的最小值,maxt为输出的最大值。
q=50; q1=0; q0=70; %赋值
while(q1<q) %当q1<q时,
q=q0; %q=q0
[M,N]=size(X); % M为X的行数;N为X的列数
[L,N]=size(T); %L为T的行数;N为T的列数
net=newff(minmax(X),[q,L],{'tansig','purelin'},'trainlm'); %建立前馈型网络。其中minmax(X)为输入向量X的最小值和最大值;q为隐含层单元数;L为隐含层层数;tansig 隐含层转移函数;purelin 输出层转移函数;trainlm网络的训练函数
net.trainParam.lr=0.01; %网络学习速率
net.trainParam.epochs=2000; %学习步骤
net.trainParam.goal=1e-5; %学习目标
[net,tr]=train(net,X,T); %对建立好的网络进行训练
Y=sim(net,X); %对输入量X进行仿真,Y为仿真结果
Y=postmnmx(Y,mint,maxt); %对仿真结果进行反归一化
%灰色关联分析,调整网络隐层节点
p=0.3;
e=0.3;
an=repmat(net.b{1},1,N); %将矩阵net.b{1}复制1×N块,即an由1×N块net.b{1}平铺而成
op=tansig(net.iw{1,1}*X+an); %
op1=op'; % op1为op的转置
T0=T'; % T0为T的转置
T1=repmat(T0,1,q); %将矩阵T0复制1×q块,即T1由1×q块T0平铺而成
DIF=abs(T1-op1); % T1-op1的绝对值
MIN=min(min(DIF)); %min(DIF),DIF 的最小值
MAX=max(max(DIF)); %max(DIF),DIF 的最大值
Si=(MIN+p*MAX)./(DIF+p*MAX); %计算得到Si
ri=sum(Si)/N;% 求Si的平均值;sum(Si)是对Si进行求和
D=find(ri>=e); %找出数组ri中的所有大于e的元素的位置,并且在向量D中返回非零元素的线性索引。
[q0,q1]=size(D); % q0为D的行数,q1为D的列数
q0=q1; %将q1的值赋给q0
end
q0;
ri;
D;
q=q1; %将q的值赋给q1
1、这是三层网络 2、隐含层由70 个神经元组成 3、输入神经元个数61 输出神经元个数61
这是我自己的理解,因为不知道干什么用所以不知道具体的是什么意思,只能单句理解没法整体掌握,就先分析到这里吧,不知道对错,希望对你有帮助~
clear %清除所有变量
clc %清除commond命令窗口的内容
IN=1:61; %给IN赋值,[1 2 3 4 5 6 … 59 60 61]
sr=zeros(1,61); % sr是1×61的零矩阵,[0 0 0 0 0 … 0]
OUT=sr; % 把矩阵sr赋值给OUT
[X,minx,maxx,T,mint,maxt]=premnmx(IN,OUT); % 对输入和输出函数进行归一化处理,其中:IN为输入数据,OUT为输出数据,X为输入数据转换成的标准数据,minx为输入的最小数据,maxx为输入的最大数据,T为输出数据转换成的标准数据,mint为输出的最小值,maxt为输出的最大值。
q=50; q1=0; q0=70; %赋值
while(q1<q) %当q1<q时,
q=q0; %q=q0
[M,N]=size(X); % M为X的行数;N为X的列数
[L,N]=size(T); %L为T的行数;N为T的列数
net=newff(minmax(X),[q,L],{'tansig','purelin'},'trainlm'); %建立前馈型网络。其中minmax(X)为输入向量X的最小值和最大值;q为隐含层单元数;L为隐含层层数;tansig 隐含层转移函数;purelin 输出层转移函数;trainlm网络的训练函数
net.trainParam.lr=0.01; %网络学习速率
net.trainParam.epochs=2000; %学习步骤
net.trainParam.goal=1e-5; %学习目标
[net,tr]=train(net,X,T); %对建立好的网络进行训练
Y=sim(net,X); %对输入量X进行仿真,Y为仿真结果
Y=postmnmx(Y,mint,maxt); %对仿真结果进行反归一化
%灰色关联分析,调整网络隐层节点
p=0.3;
e=0.3;
an=repmat(net.b{1},1,N); %将矩阵net.b{1}复制1×N块,即an由1×N块net.b{1}平铺而成
op=tansig(net.iw{1,1}*X+an); %
op1=op'; % op1为op的转置
T0=T'; % T0为T的转置
T1=repmat(T0,1,q); %将矩阵T0复制1×q块,即T1由1×q块T0平铺而成
DIF=abs(T1-op1); % T1-op1的绝对值
MIN=min(min(DIF)); %min(DIF),DIF 的最小值
MAX=max(max(DIF)); %max(DIF),DIF 的最大值
Si=(MIN+p*MAX)./(DIF+p*MAX); %计算得到Si
ri=sum(Si)/N;% 求Si的平均值;sum(Si)是对Si进行求和
D=find(ri>=e); %找出数组ri中的所有大于e的元素的位置,并且在向量D中返回非零元素的线性索引。
[q0,q1]=size(D); % q0为D的行数,q1为D的列数
q0=q1; %将q1的值赋给q0
end
q0;
ri;
D;
q=q1; %将q的值赋给q1
1、这是三层网络 2、隐含层由70 个神经元组成 3、输入神经元个数61 输出神经元个数61
这是我自己的理解,因为不知道干什么用所以不知道具体的是什么意思,只能单句理解没法整体掌握,就先分析到这里吧,不知道对错,希望对你有帮助~
追问
你的回答对我很有帮助,这是个灰色和BP的组合程序,我用它来预测顾客数量的,你整体掌握帮我解释解释一下吧。还有这个图我不了解,看不太懂,你也顺便帮我解释一下吧。对了,http://zhidao.baidu.com/question/245887304.html这有我的另外一个问题,也是关于MATLAB的,要是可以一起解释了,分都给你了。谢谢你了,解释尽量详细点啊!
追答
关于灰色和BP的组合预测程序我没有用过,不太清楚,还有这个图我也不知道,抱歉哈。另外的那个问题我已经回答了~
展开全部
premnmx语句的语法格式是:[Pn,minp,maxp,Tn,mint,maxt]=premnmx(P,T),其中P,T分别为原始输入和输出数据,minp和maxp分别为P中的最小值和最大值。mint和maxt分别为T的最小值和最大值。premnmx函数用于将网络的输入数据或输出数据进行归一化,归一化后的数据将分布在[-1,1]区间内。
matlab中的归一化处理有三种方法
1. premnmx、postmnmx、tramnmx
2. restd、poststd、trastd
3. 自己编程
这个神经网络具体干什么用还没看懂,跟专业有关。
matlab中的归一化处理有三种方法
1. premnmx、postmnmx、tramnmx
2. restd、poststd、trastd
3. 自己编程
这个神经网络具体干什么用还没看懂,跟专业有关。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一到第N/4个值
2. f=-0.5:1/N:0.5-1/N; 中-0.5的意思是f的初值,0.5-1/N是f的最后值,1/N则是f没变化一次的增量。例如若N=10,那么f=-0.5:0.1:0.4,其实f就分别取-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4
你用f=-0.5:0.5 则系统会默认增量是1 所以系统不可能运行出来
3. f即是plot作图的横坐标 ,至于fftshift 你在matlab 里运行help fftshift
fftshift函数就是一个交换函数:
交换规则如下:
如:x=[1 2 3 4 5 6 7 8];
y=fftshift(x);
then y=[5 6 7 8 1 2 3 4];
其在fft运算里的物理意义:
把0频(低频)周围的频谱搬移到中频范围(采样频率的一半),只是形象化的展示FT变换后的低频成分(正负频率)。
其实质是把Fs/2的右边频谱平移到Fs/2的左边,把低频平移到Fs/2的右边,各图象间距不变。不知道怎么贴图,放附件了。
2. f=-0.5:1/N:0.5-1/N; 中-0.5的意思是f的初值,0.5-1/N是f的最后值,1/N则是f没变化一次的增量。例如若N=10,那么f=-0.5:0.1:0.4,其实f就分别取-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4
你用f=-0.5:0.5 则系统会默认增量是1 所以系统不可能运行出来
3. f即是plot作图的横坐标 ,至于fftshift 你在matlab 里运行help fftshift
fftshift函数就是一个交换函数:
交换规则如下:
如:x=[1 2 3 4 5 6 7 8];
y=fftshift(x);
then y=[5 6 7 8 1 2 3 4];
其在fft运算里的物理意义:
把0频(低频)周围的频谱搬移到中频范围(采样频率的一半),只是形象化的展示FT变换后的低频成分(正负频率)。
其实质是把Fs/2的右边频谱平移到Fs/2的左边,把低频平移到Fs/2的右边,各图象间距不变。不知道怎么贴图,放附件了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
net=newff(minmax(X),[q,L],{'tansig','purelin'},'trainlm'); %q表示隐含层个数50,L表示输出层个数%
net.trainParam.lr=0.01; %学习率%
net.trainParam.epochs=2000; %最大训练次数为2000%
net.trainParam.goal=1e-5; %训练要求的精度%
%我也是初学,我感觉是三层的,从输入到隐含层的函数是tansig,采用的训练方法为Levenberg-Marquardt,这种训练方法是针对表现函数为平方和形式的。%
net.trainParam.lr=0.01; %学习率%
net.trainParam.epochs=2000; %最大训练次数为2000%
net.trainParam.goal=1e-5; %训练要求的精度%
%我也是初学,我感觉是三层的,从输入到隐含层的函数是tansig,采用的训练方法为Levenberg-Marquardt,这种训练方法是针对表现函数为平方和形式的。%
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询