Is it possible to find autocorrelation function of a piecewise function?

3 views (last 30 days)
syms yt(t);
yt(t) = piecewise(1<t <3, 1, 3 < t < 4, -1, 0);
figure
subplot(2,1,1)
fplot(yt)
subplot(2,1,2)
auto = autocorr(yt);
fplot(auto)
I am trying to find the autocorrelation function of a piecewise function but none of the commands seem to work because it is of type syms. I there any way around this?

Accepted Answer

Dimitris Kalogiros
Dimitris Kalogiros on 30 Sep 2018

You have to calculate autocorrelation using its definition :

clear all; close all; clc;  
syms  yt(t) tau t;
    % our signal
    y(t) = piecewise((1<t) & (t<3), 1, (3<t) & (t<4), -1, 0)
    %autocorrelation R(t)
    syms R(t)
    R(tau)=int(y(t)*y(t+tau), t, -20, 20)
    % plot results
    figure
    subplot(2,1,1)
    fplot(y, 'LineWidth', 3); grid on
    xlabel('t'); ylabel('y(t)'); title('Signal');
    subplot(2,1,2)
    fplot(R, 'LineWidth', 3, 'color', [0 .5 0]); grid on;
    xlabel('tau'); ylabel('R(tau)'); title('Autocorrelation');

...and you will get this:

More Answers (0)

Categories

Find more on Function Creation in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!