Suppose I have a wav signal and want to delay it in matlab by 'n' number of samples, could someone please tell me how I could do it?
Thanks in advance

 채택된 답변

Pablo López
Pablo López 2019년 7월 18일

2 개 추천

You should use the next command:
shifted_data = delayseq(data,DELAY)
You must notice that data must be a column vector or it won't work and you should specify in DELAY the number of samples you want to delay your signal. Here you have more information.
Hope that helps!

댓글 수: 5

Walter Roberson
Walter Roberson 2019년 7월 18일
Using delayseq() has the advantage of permitting non-integer delays. And of course it saves you from having to write your own code.
ARHUM AHMAD
ARHUM AHMAD 2019년 12월 21일
it does'nt work properly
Walter Roberson
Walter Roberson 2019년 12월 21일
What difficulty did you have? Was there an error message?
Sri Harsha Palepu
Sri Harsha Palepu 2021년 4월 5일
Can this be used to sine wave also
Walter Roberson
Walter Roberson 2021년 4월 5일
delayseq() from the Phased Array Toolbox can be used for real or complex vectors, or for real or complex 2D matrices in which each column is to be treated as a channel.
The thing to remember about delayseq() is that it works on arrays, not on some modeled underlying signal form. So it does not care whether the data happens to represent a sine wave -- if you ask to delay by two sample time then it is just going to fill in two 0's.
delayseq() is not suitable for the case where you are modeling a signal that is intended to have existed indefinitely in the past, and for which you want to do a phase change, with the intention being that the initial data will be "filled in" with whatever part of the signal would have existed in the past but in theory got delayed to the present.

댓글을 달려면 로그인하십시오.

추가 답변 (3개)

Walter Roberson
Walter Roberson 2011년 11월 15일

0 개 추천

delayed_signal = [zeros(1,n) original_signal];
Unless that is, the signal is a column vector, in which case
delayed_signal = [zeros(n, size(original_signal,2)); original_signal];

댓글 수: 1

Padma
Padma 2011년 11월 15일
i am not getting the correct delay, when i am measuring it using xcorr in my program

댓글을 달려면 로그인하십시오.

Wayne King
Wayne King 2011년 11월 15일

0 개 추천

Why? Seems to me that the way Walter gave you works.
original_signal = randn(10,1);
n = 5;
delayed_signal = [zeros(n,1) ; original_signal];
[c,lags] = xcorr(delayed_signal,original_signal);
stem(lags,c);
[~,maxlag] = max(c);
fprintf('Signal is delayed %d samples\n',lags(maxlag));
Jannatul Ferdous
Jannatul Ferdous 2019년 1월 30일

0 개 추천

x=[1 2 3 4];
subplot(3,1,1);
stem(x);
title('X');
y=[1 1 1 1];
subplot(3,1,2);
stem(y);
title('Y');
z=x+y;
subplot(3,1,3);
stem(z);
title('Z=X+Y');

카테고리

도움말 센터File Exchange에서 Time-Frequency Analysis에 대해 자세히 알아보기

질문:

2011년 11월 15일

댓글:

2021년 4월 5일

Community Treasure Hunt

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

Start Hunting!

Translated by