www.pudn.com > AR_MATLAB.rar > WienerFiltering.m


% File: WienerFiltering.m 
% ----------------------- 
% This file integrates the sequence generation module and correlation 
% calculation module. 
 
function WienerFiltering(L, N) 
% L: Sample length 
% N: Filter length 
 
WienerFilter_SeqGen(L, N); % Sequence Generation Module 
                           % for sample length L = 500, 
                           % filter length N = 10. 
WienerFilter_Core(); % Correlation Calculation Module 
 
load WienerFilter_SeqGen.mat; 
load WienerFilter_Core.mat; 
 
% FIR Wiener Filtering 
output_vector_fir = conv(signalvector_x, h_fir); % FIR convolution L+N-1 samples 
output_fir = zeros(L, 1); 
for n = 1: L 
    output_fir(n) = output_vector_fir(n); % L samples cutoff 
end 
 
% Ideal Wiener Filtering 
%signalvector_x_cat = vertcat(signalvector_x, zeros(N - 1, 1)); 
s_ide_0 = 0; % for s_ide(1) = 0 + 0.238 x(1) 
%output_vector_ide(1) = 0.724 * s_ide_0 + 0.238 * signalvector_x_cat(1); 
%for n = 2: (L + N - 1) 
%    output_vector_ide(n) = 0.724 * output_vector_ide(n - 1) + 0.238 * signalvector_x_cat(n); 
%end 
output_vector_ide = zeros(L, 1); 
output_vector_ide(1) = 0.724 * s_ide_0 + 0.238 * signalvector_x(1); 
for n = 2: L 
    output_vector_ide(n) = 0.724 * output_vector_ide(n - 1) + 0.238 * signalvector_x(n); 
end 
output_ide = output_vector_ide; 
 
%h_ide_cat = vertcat(h_ide, zeros((length(signalvector_x) - length(h_ide)), 1)); 
% 
%output_vector_ide = conv(signalvector_x, h_ide_cat); % test point 
 
%for n = 1: L 
%    output_ide(n) = output_vector_ide(n); % L samples cutoff 
%end 
 
savefile = 'WienerFiltering.mat'; 
save(savefile, 'output_vector_fir', 'output_fir', 'output_vector_ide', 'output_ide'); 
 
clear; 
 
WienerFilter_MSE(); 
%WienerFilter_Plot(); 
 
clear;