📄 tfma_fit2.m
字号:
function [E, Eprime]= tfma_fit2(x, Mmax, Lmax, Psi, lambda)% function [E, Eprime]= tfma_fit2(x, Mmax, Lmax, Psi, lambda)% This file is part of the TFPM toolbox v1.0 (c)% michael.jachan@tuwien.ac.at and underlies the GPL.% % Searches TFMA(M, L) models for M= 1:Mmax, L= 0:Lmax. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if(0)% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%clear;tfpm;N = 256;MAR = 0;LAR = 0;MMA = 2;LMA = 2;re_im= 'i';mo_no= 'n';tfpm_file_gen;%-------------alpha= 1/2;beta = 1/2;lambda= .9800;Mmax= max([2*MAR 2]);Lmax= max([2*LAR 2]);%Psi= ones(N);Psi= tf_multiwin(N, 3*Mmax, 4*Lmax, 0, 2, 1);x= tfarma_gen(randn(N, 1), Aml, Bml, beta);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%end;% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%alpha= 1/2;beta = 1/2;N= length(x);Ax= fft(corr_est(x, x, -1, alpha));Ax= [ Ax(N/2+1:N, :); Ax(1:N/2, :)].*conj(Psi);E= 99999*ones(Mmax, Lmax+1, Lmax+1);Eprime= 99999*ones(Mmax, Lmax+1, Lmax+1);for L= 0:Lmax M= 1; BB= tfma_est_cepsb(Ax, M, L);% BB= tfma_est_lin(x, Ax, Psi, M, L, 2*M, 2*L);BB=BB(:, :, end); [Bml1, lambdamax, mm, nrFDIR]= param_stabilize(BB, N, lambda); e= tfarma_inv(x, 1, Bml1); eprime= tfarma_inv(x, 1, Bml1/param_get(Bml1, 0, 0)); E(M, L+1, 1) = e'*e/N; Eprime(M, L+1, 1)= eprime'*eprime/N; for M= 2:Mmax BB= tfma_est_cepsb(Ax, M, L); for LL= 0:L% Inverse TFAR Filtering Mask= ones(2*L+1, M+1); Mask(1:L-LL, end)= zeros(L-LL, 1); Mask(L+2+LL:end, end)= zeros(L-LL, 1);% figure(1);plot(abs(param_tdir(AA(:, 1:M+1, M), N)))% figure(2);plot(abs(param_tdir(AA(:, 1:M+1, M).*Mask, N))) [Bml1, lambdamax, mm, nrFDIR]= param_stabilize(BB(:, 1:M+1).*Mask, N, lambda); e= tfarma_inv(x, 1, Bml1); eprime= tfarma_inv(x, 1, Bml1/param_get(Bml1, 0, 0)); E(M, L+1, L-LL+1) = e'*e/N; Eprime(M, L+1, L-LL+1)= eprime'*eprime/N;% Aml1% Bml1% drawnow end; end;end;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if(0)% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%clear;tfpm;for n= 8:8 N= 2^n; re_im= 'i'; mo_no= 'n'; alpha= 1/2; beta = 1/2; lambda= .9800; MM= 100; for M= 2:2 for L= 3:3 MAR = 0; LAR = 0; MMA = M; LMA = L; tfpm_file_gen;%------------------------- Bml= Bml/param_get(Bml, 0, 0); Mmax= max([2*M 2]); Lmax= max([2*L 2]); [Psi, Mask, v2]= tf_multiwin(N, 2*Mmax+2, 2*Lmax+2, 5, 0, 0);% Psi= ones(N); EE= zeros(Mmax, Lmax+1, Lmax+1, MM); EEprime= zeros(Mmax, Lmax+1, Lmax+1, MM); for mm= 1:MM x= tfarma_gen(randn(N, 1), Aml, Bml/param_get(Bml, 0, 0), 1/2); [E, Eprime]= tfma_fit2(x, Mmax, Lmax, Psi, lambda); EE(:, :, :, mm)= E; EEprime(:, :, :, mm)= Eprime; [N M L mm] end; exp= 'ord2B'; resultname= sprintf('data/%04d/%s%d%d%s%s.mat', N, exp, M, L, re_im, mo_no) save(resultname, 'lambda', 'Mmax', 'Lmax', 'MM', 'EE', 'EEprime') end; end;end;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%end;% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -