simo85 ha scritto:e una frequenza di campionamento
Volevi dire
?Se è così non va bene, devi scegliere
.simo85 ha scritto:e una frequenza di campionamento
?
.
instead of
(Anonimo).
ain't
, right?
in lieu of
.
for
arithm.


instead of
(Anonimo).
ain't
, right?
in lieu of
.
for
arithm.

che hai ottenuto non è simmetrica.
altrimenti il filtro sarebbe anticausale ovvero richiederebbe i campioni futuri.
e
.
del tuo passa-basso dovrà essere compresa tra gli estemi precedentemente citati.
ottieni di fatto un filtro passa-tutto.
ed
.
ed
.
.




dimaios ha scritto:In pratica la frequenza di tagliodel tuo passa-basso dovrà essere compresa tra gli estemi precedentemente citati.
Seottieni di fatto un filtro passa-tutto.
, si deve allora avere ![h[n] = \begin{cases} 1 &n=0 \\ 0 &n\neq 0\end{cases} h[n] = \begin{cases} 1 &n=0 \\ 0 &n\neq 0\end{cases}](/forum/latexrender/pictures/d8f33a438f5b3d783253173d4a37fa2a.png)


, si ha
e![h[0] = \frac{\omega_c}{\pi} = 1 h[0] = \frac{\omega_c}{\pi} = 1](/forum/latexrender/pictures/19849f4ce7a908de710bf82b370fbfca.png)
![h[n] = \frac{\sin(\omega_c n)}{\pi n} = h[n] = \frac{\sin(\pi n)}{\pi n} = 0 h[n] = \frac{\sin(\omega_c n)}{\pi n} = h[n] = \frac{\sin(\pi n)}{\pi n} = 0](/forum/latexrender/pictures/53eecf008043b1f99052ffb8239e11f6.png)
.
che gira nei coefficienti, nell'analisi dei segnali preferisco sempre lavorare con le frequenze e non con le pulsazioni.
instead of
(Anonimo).
ain't
, right?
in lieu of
.
for
arithm.

simo85 ha scritto:Urca, quindi il libro su cui ho fatto riferimento mi ha dato una cantonata?
è una grandezza adimensionata definita nell'intervallo
. Come nel dominio continuo, la pulsazione è data da
.
. I matematici spesso preferiscono il dominio delle pulsazioni, ma tra gli ingegneri direi che prevale il dominio delle frequenze.
instead of
(Anonimo).
ain't
, right?
in lieu of
.
for
arithm.


DirtyDeeds ha scritto:nel dominio discreto, la frequenza f è una grandezza adimensionata definita nell'intervallo [-1/2,1/2].
dimaios ha scritto:Per fare l'esercizio imposta F_c=10kHz ed F_t=1kHz.
e
. #include <math.h>
#include <stdio.h>
#include <stdlib.h>
/* Pi costant*/
#define PI 3.1415926535897932384626433832795029L
void zeros(double x[], double h[], double y[], int N, int N_h)
{
unsigned int i = 0, tmpN = 0;
if(N > N_h)
{
while(i < N)
{
if(i < N_h)
h[i] = 0;
x[i] = y[i] = 0;
i++;
}
}
else
{
while(i < N_h)
{
if(i < N)
x[i] = y[i] = 0;
h[i] = 0;
i++;
}
}
}
double set_LP_coefficient(int n_i, double w_c)
{
if(n_i == 0)
return 2 * w_c;
else
return sin(2 * PI * w_c * n_i)/(PI * n_i);
}
int main(int argc, char *argv[])
{
if(argc < 2)
{
printf("usage: %s N(int) N_h (int)\n\non is the \
lenght of x array\nN_h is the lenght of array h\n\n", argv[0]);
return 1 ;
}
else
{
/*
i is the index for arrays
n_i is the n point
N is the total point number
N_h is the impulse response lenght
*/
int i = 0, n_i = 0;
int N = atoi(argv[1]), N_h = atoi(argv[2]);
/*
x[N] is the input signal array
h[N_h] is the impulse response coefficient array
y[N] is the output signal array
*/
double x[N], h[N_h], y[N];
/*
fs Sampling frecuency set to 10kHz
fc Cutoff frequency set to 1kHz
w is 2PI(fc / fs)
*/
double fc = 1000, fs = 10000, w_c = ((2 * PI * fc) / fs);
zeros(x, h, y, N, N_h);
/* set n_i to negative and N_h / 2) + 1 */
n_i = 0 - (N_h / 2);
/* set index to zero */
i = 0;
while(i < N_h)
{
h[i] = set_LP_coefficient(n_i, w_c);
printf("h[%.2d]\t%.10f\n", i, h[i]);
n_i++;
i++;
}
return 0;
}
}
h[00] 0.0431684235
h[01] -0.0350947863
h[02] -0.0273938263
h[03] 0.0795082871
h[04] -0.0375186924
h[05] -0.1148614620
h[06] 0.2927940834
h[07] 0.2000000000
h[08] 0.2927940834
h[09] -0.1148614620
h[10] -0.0375186924
h[11] 0.0795082871
h[12] -0.0273938263
h[13] -0.0350947863
h[14] 0.0431684235
h[15] -0.0033146847
simo85 ha scritto:e la lunghezza dell'array h (la chiamerò N_h) deve essere la metà di quella dell'array x e y (ma forse non necessariamente - non mi è ancora del tutto chiaro- ) e
non dipende dal numero di campioni in ingresso.


Torna a Elaborazione numerica ed analogica dei segnali
Visitano il forum: Nessuno e 5 ospiti