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

2 ビュー (過去 30 日間)
Himanshu Sharma
Himanshu Sharma 2018 年 9 月 29 日
回答済み: Dimitris Kalogiros 2018 年 9 月 30 日
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?

採用された回答

Dimitris Kalogiros
Dimitris Kalogiros 2018 年 9 月 30 日

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:

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeFunction Creation についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by