Hi. I’m trying to understand the concepts behind finding training strategies for NARNETs that can make as good predictions as possible. What I want to create is a script that I can feed any time series to, regardless of how it looks, and then find the best training design for it. This is the code I have at the moment:
T = simplenar_dataset; %example time series N = length(T); % length of time series MaxHidden=10; %number of hidden nodes that will be tested %Attempt to determine Significant feedback delays with Autocorrelation autocorrT = nncorr(zscore(cell2mat(T),1),zscore(cell2mat(T),1),N-1); [ sigacorr inda ] = find(abs(autocorrT(N+1:end) > 0.21)) for hidden=1:MaxHidden parfor feedbackdelays=1:length(inda) FD=inda(feedbackdelays); net = narnet( 1:FD, hidden ); [ Xs, Xsi, Asi, Ts ] = preparets( net, {}, {}, T ); ts = cell2mat( Ts ); net.divideFcn ='divideblock'; %Divides the data using divide block net.trainParam.min_grad=1e-15; net.trainParam.epochs=10000; rng( 'default' ) [ net tr Ys Es Af Xf ] = train( net, Xs, Ts, Xsi, Asi); NMSEs = mse( Es ) /var( ts,1 )% Mean squared error performance function performanceDivideBlockNMSEs(hidden,feedbackdelays)=NMSEs; end end
ANSWER
Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.
- Unfortunately, the form of NNCORR that you are using is BUGGY!
PROOF: a. plot(-(N-1):N-1, autocorrT) b. minmax(autocorrT) = [ -2.3082 1.0134 ] c. sigacorr = ones(1,41)
2. BETTER SOLUTION: Use the Fourier Method
za = zscore(a,1); zb = zscore(b,1); % a,b are double (i.e., not cells) A = fft(za); B = fft(zb); CSDab = A.*conj(B); % Cross Spectral Density crosscorrFab = ifft(CSDab); % F => Fourier method crosscorrFba = conj(crosscorrFab);
3. You might wish to compare this with the NNCORR documentation options
help nncorr doc nncorr % The optional FLAG determines how nncorr normalizes correlations. % 'biased' - scales the raw cross-correlation by 1/N. % 'unbiased' - scales the raw correlation by 1/(N-abs(k)), where k % is the index into the result. % 'coeff' - normalizes the sequence so that the correlations at % zero lag are identically 1.0. % 'none' - no scaling (this is the default). crosscorrBab = nncorr( za, zb, N-1, 'biased' ); % B ==> "b"iased crosscorrNab = nncorr( za, zb, N-1, 'none' )/N; % N ==> "n"one crosscorrUab = nncorr( za, zb, N-1, 'unbiased' ); % U ==> "u"nbiased crosscorrtMab = nncorr( za, zb, N-1 ); % M ==> "m"issing flag % crosscorrCab = nncorr( za, zb, N-1, 'coeff' ); ERROR: BUG
Comments
Post a Comment