-
Notifications
You must be signed in to change notification settings - Fork 35
/
Copy pathprova_Wiener_2.m
executable file
·77 lines (40 loc) · 1.47 KB
/
prova_Wiener_2.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
%% Deconvoluzione MMSE con filtro di Wiener
%Devo conoscere:
% 1) filtro lineare attraversato
% 2) autocorrelazione delle osservazioni
% 3) traformata Z della sequenza di ingresso, almeno approssimativamente
clear all;
close all;
clc;
% Rumore bianco in ingresso
N=100;
%sig_w=2; %potenza del rumore ingresso
%w=sig_w*randn(N,1); %vettore colonna
n=0:N-1;
%f=10;
sig_w=10;
w=sig_w*randn(N,1); %segnale, vettore colonna
%Filtro lineare attraverso il quale passa il rumore
h=[1 -1 1 -1 1]'; %5 campioni
M=length(h);
%rumore bianco additivo
G=N+M-1;
sig_z=0.1; %varianza del rumore additivo
z=sig_z*randn(G,1);
%osservazioni
x=conv(w,h)+z;
X=fftshift(fft(x,G));
H=fftshift(fft(h,G));
%Conosco la DSP del processo di segnale, che è a banda piatta e vale sig_w
%stimo numeratore del filtro di Wiener
num=(sig_w.*conj(H));
den=(sig_w.*(H.*conj(H)))+sig_z;
A_stim=num./den;
asse=(-G/2+1)*((2*pi)/G):((2*pi)/G):((2*pi)/G)*G/2;
figure,subplot(1,2,1),plot(asse,abs(A_stim),'k'),title('Modulo del filtro di Wiener'),...
subplot(1,2,2),plot(asse,angle(A_stim),'r'),title('Fase del filtro di Wiener')
figure,subplot(1,2,1),plot(asse,abs(W),'k'),title('Modulo del rumore in ingresso'),...
subplot(1,2,2),plot(asse,angle(W),'r'),title('Fase del rumore in ingresso')
W_stim=X.*A_stim;
figure,subplot(1,2,1),plot(asse,abs(W_stim),'k'),title('Modulo del segnale in ingresso stimato'),...
subplot(1,2,2),plot(asse,angle(W_stim),'r'),title('Fase del segnale in ingresso stimato')