How can I study Autocorrelation function of common inputs?

2 vues (au cours des 30 derniers jours)
Teodoro Coluccio
Teodoro Coluccio le 28 Juin 2022
I'm trying to study the autocorrelation function for some basic signals, such as rectangularPulse and triangularPulse, and to do that I found the xcorr () function. The problem is that the function wants 2 vectors in input, so I'm trying to convert the function to vectors, but mine can be a non linear function...
Also I don't even know if this is the right way...
Everything I'm trying I found here https://en.mathworks.com/help/signal/correlation-and-convolution.html.

Réponse acceptée

Balaji Udayagiri
Balaji Udayagiri le 5 Juil 2022
Hi Teodoro,
As per my understanding, you want to know how to perform autocorrelation for non-linear functions.
You can use the xcorr() function to do the same.
Here is an example code using a sine function to do the same:
fs = 1.0e4;
t = 0:1/fs:0.005;
signal = sin(2*pi*1000*t)';
figure(1);
stem(t,signal);
[c,lags] = xcorr(signal);
figure(2);
stem(lags,c)
You can replace the sin function of any linear or non-linear function of your choice.

Plus de réponses (1)

Jonas
Jonas le 30 Juin 2022
Modifié(e) : Jonas le 30 Juin 2022
you can simply generate your own vectors in matlab and do some studying
e.g.
rectPulse = [zeros(1,10) ones(1,15) zeros(1,10)];
tiledlayout('flow');
nexttile()
stem(rectPulse);
nexttile()
[val,lag]=xcorr(rectPulse);
stem(lag,val);
linkaxes()
figure
triPulse=zeros(1,100);
triPulse(31:70)=(1:40)/10;
tiledlayout('flow');
nexttile()
plot(triPulse);
nexttile()
[val,lag]=xcorr(triPulse);
plot(lag,val);
nexttile()
val=conv(triPulse,triPulse);
plot(val);

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by