Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Rappresentare la convoluzione continua con Matlab

Strumenti informatici per la matematica applicata, le simulazioni, il disegno: Mathcad, Matlab, Scilab, Microcap, PSpice, AutoCad ...

Moderatori: Foto Utenteg.schgor, Foto Utentedimaios

0
voti

[1] Rappresentare la convoluzione continua con Matlab

Messaggioda Foto Utentesimo85 » 20 ago 2015, 21:50

Ciao a tutti O_/

Mi piacerebbe rappresentare, con matlab, la convoluzione continua di due segnali, ma sto avendo qualche problemino..

Giusto per fare un esempio tratto dal libro Signals & Systems 2nd Edition by Oppenheim, Willsky e Nawab, avendo due segnali:

\begin{aligned}
& x(\tau) = e^{2\tau}u(-\tau)\\
& h(\tau) = u(t - 3)
\end{aligned}

Si ha:

y(t) = x(t) * h(t) = \begin{cases}
{\text e^{2(t-3)}\over 2} & t < 3\\
{1 \over 2} & t \geq 3
\end{cases}

Rappresentazione ottenuta con Geogebra a mano:

xhconv.png
xhconv.png (7.01 KiB) Osservato 5442 volte


Ecco, vorrei ottenere la stessa rappresentazione con matlab.
Ho provato con questo codice:

Codice: Seleziona tutto
>> y = conv(x,h,'full');
>> plot(y)
>> t = -10:0.001:10;
>> x = exp(2*t).*heaviside(-t);
>> h = heaviside(t - 3);
>> y = conv(x,h,'full');
>> ty =  -20:0.001:20;
>> plot(ty,y);


Però la rappresentazione che ottenogo è questa:

sshot.png
sshot.png (8.04 KiB) Osservato 5442 volte


Che non mi sembra corretto..

Con il caso discreto trattato qui: viewtopic.php?f=7&t=59863#p596740

Codice: Seleziona tutto
>> h1 = [1.0, 1.0, 1.0];
>> x1 = [0.5, 2.0];
>> n = 0:3;
>> y = conv(x1,h1);
>> stem(n,y1);


Non ho gli stessi problemi.
Dove sbaglio per il caso continuo ?

Ringrazio in anticipo.

O_/

Simo
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

2
voti

[2] Re: Rappresentare la convoluzione continua con Matlab

Messaggioda Foto UtenteDirtyDeeds » 20 ago 2015, 23:08

simo85 ha scritto:Mi piacerebbe rappresentare, con matlab, la convoluzione continua di due segnali, ma sto avendo qualche problemino..


Beh, la funzione conv Matlab fa sempre solo una convoluzione discreta. Quindi occhio ai tempi e alle normalizzazioni ;-)
It's a sin to write sin instead of \sin (Anonimo).
...'cos you know that cos ain't \cos, right?
You won't get a sexy tan if you write tan in lieu of \tan.
Take a log for a fireplace, but don't take log for \logarithm.
Avatar utente
Foto UtenteDirtyDeeds
55,9k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 7012
Iscritto il: 13 apr 2010, 16:13
Località: Somewhere in nowhere

0
voti

[3] Re: Rappresentare la convoluzione continua con Matlab

Messaggioda Foto Utentesimo85 » 20 ago 2015, 23:14

DirtyDeeds ha scritto:Beh, Matlab fa sempre solo una convoluzione discreta.

Si, in effetti è quello su cui stavo ragionando. :-)
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[4] Re: Rappresentare la convoluzione continua con Matlab

Messaggioda Foto Utentesimo85 » 21 ago 2015, 1:43

Dunque, forse mi sono un po' ... incasinato..

Ho ricominciato partendo da questo codice:

Codice: Seleziona tutto
>> fs = 1000;
>> t = -10:1/fs:10;
>> x = exp(2*t).*heaviside(-1*t);
>> h = heaviside(t - 3);
>> plot(t,x);hold on;plot(t,h);ylim([-1, 2]);grid on;


Con il quale riesco tranquillamente a rappresentare i due segnali:

xxx.png
xxx.png (6.11 KiB) Osservato 5411 volte


Qui la funzione h(t) è rappresentata secondo la definizione, nel messaggio 1 ho rappresentato direttamente quella 'specchiata'.

Ora, si tratta di normalizzare il vettore \hat y.

Ho proceduto cosi:

Codice: Seleziona tutto
>> y = 1/fs * conv(x,h,'full');


Ora si, il vettore di uscita y è normalizzato, ma la figura presenta sempre quella curvatuta verso la fine:



Ho provato anche ad estendere l'asse delle ascisse da -30 \leq t \leq 30 per x(t) e y(t), rappresentando da 0 a 120t con gli stessi risultati..

y.png
y.png (6.03 KiB) Osservato 5411 volte


:-k

Dove sbaglio ?
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

1
voti

[5] Re: Rappresentare la convoluzione continua con Matlab

Messaggioda Foto Utentedimaios » 25 ago 2015, 12:31

simo85 ha scritto:Dove sbaglio ?


Prova a controllare il dominio delle funzioni di partenza. Occhio agli effetti di bordo! ;-)
Ingegneria : alternativa intelligente alla droga.
Avatar utente
Foto Utentedimaios
30,2k 7 10 12
G.Master EY
G.Master EY
 
Messaggi: 3381
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes

0
voti

[6] Re: Rappresentare la convoluzione continua con Matlab

Messaggioda Foto Utentesimo85 » 25 ago 2015, 12:44

Ciao Foto Utentedimaios

dimaios ha scritto:Prova a controllare il dominio delle funzioni di partenza.

Credo di non sapere come fare con matlab.

Adesso che ci penso, forse i problemi derivano dall'usare la funzione heaviside :?:

:-k

Immaginavo ci fosse qualche problema relazionato.. Perché se estendo il dominio di t, si estende l'intervallo per cui y(t) = 0.5. Ma poi si taglia, come si può osservare.
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[7] Re: Rappresentare la convoluzione continua con Matlab

Messaggioda Foto Utentedimaios » 25 ago 2015, 12:45

I vettori che utilizzi per la convoluzione sono sempre finiti in Matlab.
Ingegneria : alternativa intelligente alla droga.
Avatar utente
Foto Utentedimaios
30,2k 7 10 12
G.Master EY
G.Master EY
 
Messaggi: 3381
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes

0
voti

[8] Re: Rappresentare la convoluzione continua con Matlab

Messaggioda Foto Utentesimo85 » 25 ago 2015, 12:48

dimaios ha scritto:I vettori che utilizzi per la convoluzione sono sempre finiti in Matlab.

OK, e forse io sto abusando di tutto questo..

Se ho capito (forse) bene, sono proprio io che sto andando oltre l'intervallo restituito da matlab.

Dico bene ?
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

1
voti

[9] Re: Rappresentare la convoluzione continua con Matlab

Messaggioda Foto Utentedimaios » 25 ago 2015, 12:50

Stai tentando di rappresentare un gradino con supporto infinito tramite un vettore di lunghezza finita.
Ingegneria : alternativa intelligente alla droga.
Avatar utente
Foto Utentedimaios
30,2k 7 10 12
G.Master EY
G.Master EY
 
Messaggi: 3381
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes

0
voti

[10] Re: Rappresentare la convoluzione continua con Matlab

Messaggioda Foto Utentesimo85 » 25 ago 2015, 12:59

OK. Esiste allora una funzione per conoscere il limite dell'intervallo, in questo caso su t ?

Altrimenti penso di poterlo calcolare facilmente.
Grazie ancora del tuo aiuto!
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

Prossimo

Torna a Programmi applicativi: simulatori, CAD ed altro

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti