我制作了一个可以使用小波的神经网络,但是我遇到了以下错误:
使用filtfilt时出错> getCoeffsAndInitialConditions(第182行) 数据长度必须大于18个样本。
filtfilt出错(第97行) [b,a,zi,nfact,L] = getCoeffsAndInitialConditions(b,a,Npts);
抽取时出错(第136行) odata = filtfilt(b,a,idata);
ENGNeuralNetwork错误(第56行) decdatae(CH,试验中,:)=挤压(抽取(CD1(CH,审判,:),32));
我对我应该改变的内容感到有点困惑,因为我确定这些都是相关的错误。这是第56行所指的代码:
for ch=1:2
for trial=1:10
decdatae(ch,trial,:)=squeeze(decimate(cD1(ch,trial,:),32));
end
end
这是第97行的代码:
for runs=1:10
% Create a neural net with 100 hidden neurons
net=newff(P,T,1000,{'tansig','logsig'},'traingdx');
net.TrainParam.epochs=1000;
net.TrainParam.goal=0.04;
net.TrainParam.min_grad=1e-20; %line 97
net.TrainParam.show=3000;
net.divideParam.trainRatio=0.6;
net.divideParam.valRatio=0;
net.divideParam.testRatio=0.4;
如果有人能让我了解如何对此进行排序,我将不胜感激。
由于
答案 0 :(得分:1)
这是filtfilt帮助文本的开头:
% The length of the input X must be more than three times the filter
% order, defined as max(length(B)-1,length(A)-1).
您可以使用open filtfilt
或help filtfilt
看到它。很奇怪,但是doc filtfilt
却看不到。
我不知道为什么对数据长度有此要求。
答案 1 :(得分:0)
请注意,通常应从底部开始读取Matlab错误。所以你想了解的是
ENGNeuralNetwork中的错误(第56行)decdatae(ch,trial,:)= squeeze(decimate(cD1(ch,trial,:),32));
当您在第56行呼叫decimate
时,您的数据decimating就是32倍!是表示您的实际数据长度除以32:
y =抽取(x,r)将输入信号x的采样率降低r, length(y)= ceil(length(x)/ r) < / p>
我们不知道您的数据的原始大小,但是如果cD1(ch,trial,:)
的长度太小,可能会出现问题。您应该检查cD1
的大小。
然后,according
用于抽取文档:
当r大于13时,为获得更好的结果,请将r分成较小的因子,并多次抽取。