Получить симметричный сигнал - PullRequest
0 голосов
/ 05 мая 2018

Учитывая сигнал x(t), нам нужно найти симметричный относительно сигнала оси Y, x(-t)

Если это полезно для вас, вот как работает мой код:

t = [-5:0.01:5];
wt = (t>=0)&(t<=1);
r = @(t) t/5;
x = r(t).*wt;
%reflection - HERE IS WHERE I AM STUCK, basically looking for v(t) = x(-t)
%Shift by 2
y = v(t-2);
%The rest of the program - printing plots basically

Я пытался использовать это:

  • v = x(t(1:end));
  • v = x(t(end:-1:1));
  • v = x(fliplr(t));

Но это не правильно, так как я получаю ошибку Array indices must be positive integers or logical values., как и ожидалось. Есть идеи?

Ответы [ 4 ]

0 голосов
/ 06 мая 2018

Учитывая любой выборочный сигнал в произвольном интервале времени:

t = [-5.003:0.01:10];
x = randn(size(t));

Вы можете отразить x вокруг t=0 с помощью:

t = -flip(t);
x = flip(x);

Обратите внимание, что в приведенном выше примере t=0 не сэмплируется. В этом методе нет необходимости.

0 голосов
/ 05 мая 2018

Сначала вы должны определить функцию сигнала, а , а затем сэмплировать ее, а не наоборот.

Например, здесь я определяю сигнал s(t), который представляет собой оконную рампу:

s = @(t) t.*((t>=0)&(t<=1))

Затем я могу найти образцы для сигнала и его симметрии:

t = -5:0.01:5;
plot(t,s(t),t,s(-t))
0 голосов
/ 06 мая 2018

Для меня сработало определение функции reflect следующим образом:

function val = reflect(t)
    val = -t;
end

И затем использовать его с функцией сдвига для достижения моей цели.

0 голосов
/ 05 мая 2018

Одним из решений является то, что вы считаете что-то вроде этого:

x=signal;   % with length 2*N+1 and symmetric 
t= -N:N;

Теперь рассмотрим значение индекса -2.

x(find(t==-2))

Для сигнала линейного изменения в качестве экземпляра:

signal=[r(end:-1:1) 0 r]

с этим предположением, что r является вектором базы строк и длиной N.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...