How to add the new delayed signal to the PLOT !

조회 수: 14 (최근 30일)
Susan
Susan 2011년 8월 29일
댓글: Honglei Chen 2014년 12월 1일
Hey all, My code below is working, however by looking at the plot it seems it didn't draw the new delayed signals, It just plotted the second signal? Is it something to do with [xi,f]=ksdensity(Y+delay); I am not adding the delay?
x = sample1(:,1);
X = (x).';
y = sample2(:,1);
Y = (y).';
figure;
clf
fisrt = subplot(3,1,1);
[xi,f]=ksdensity(X);
plot(f,xi);
line(repmat(X,2,1),repmat([0;0.1*max(xi)],1,length(X)),'color','r' );
second = subplot(3,1,2);
[xi,f]=ksdensity(Y);
plot(f,xi);
line(repmat(Y,2,1),repmat([0;0.1*max(xi)],1,length(Y)),'color','r' );
[Rxx,lags] = xcorr(X,Y);
[Z,delay] = max(Rxx);
lags(delay);
if delay>0
hold(first,'on');
[xi,f]=ksdensity(Y+delay);
plot(first,f,xi);
else
hold(second,'on');
[xi,f]=ksdensity(X+delay);
plot(second,f,xi);
end
Cheers,
  댓글 수: 2
Fangjun Jiang
Fangjun Jiang 2011년 8월 29일
See my comment in your previous question. You accepted the answer. What further work have you done?
http://www.mathworks.com/matlabcentral/answers/14446-plot-problem
Fangjun Jiang
Fangjun Jiang 2011년 8월 30일
The same mistake was pointed out even earlier. So, instead of making the same mistake again and again, please make your own effort to read, understand and learn it.
http://www.mathworks.com/matlabcentral/answers/13110-signal-processing

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

채택된 답변

Rick Rosson
Rick Rosson 2011년 8월 29일
Honglei's answer is correct, and it explains why simply adding 2 to an existing signal does not shift the signal in time, but merely shifts every value upward by 2.
To shift a signal in time, you need to insert zeros at the beginning of the signal, an operation which is often called zeropadding.
Please try the following example:
% define a simple signal:
x = (1:20)';
% now shift the signal in time by zeropadding at the beginning:
N = 5;
y = [ zeros(N,1) ; x ];
% Also, let's zeropad x at the end so that it has the same length as y:
x = [ x ; zeros(N,1) ];
% Create a simple time domain:
n = (1:size(x,1))';
% plot both signals:
figure;
plot(n,x,n,y);
legend('x','y');
You should see that y is a shifted version of x.
HTH.
Rick
  댓글 수: 2
lamawal Jonathan
lamawal Jonathan 2014년 11월 30일
Hello All! i'm on a similar problem (zero pad a signal), the slight difference is that my signal is a vector of single row and 2400 columns. each time i zero pad, it gives me the following error;
"Error using vertical
Dimensions of matrices being concatenated are not consistent."
i even tried running your code several times but it repeats same error on line 5 (y = [ zeros(N,1) ; x ];) of your code. pls, help i'm very new to matlab and it's very important for me.
Honglei Chen
Honglei Chen 2014년 12월 1일
Your signal is a row vector, so it should be y=[zeros(1,N) x].

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

추가 답변 (2개)

Honglei Chen
Honglei Chen 2011년 8월 29일
Hi Susan,
X+delay does not delay the signal, it merely adds an offset of delay's value to X. To delay a signal, you need to shift it in samples. One way to do it is to pad zeros in the front. For example, assume your delay is 1 second and your sampling frequency is also 1 second, then you need to insert 1 zero in front of signal, i.e., make
X_delay = [0 X];
HTH
  댓글 수: 9
Fangjun Jiang
Fangjun Jiang 2011년 8월 29일
I am amazed by the way you learn. The way for "applying it" has been given in this answer and many other answers. If you spend more time reading it and understanding it, instead of asking the same question repeatedly, your problem may already be solved.
lamawal Jonathan
lamawal Jonathan 2014년 11월 30일
Hello All! i'm on a similar problem (zero pad a signal), the slight difference is that my signal is a vector of single row and 2400 columns. each time i zero pad, it gives me the following error;
"Error using vertical
Dimensions of matrices being concatenated are not consistent."
i even tried running your code several times but it repeats same error on line 5 (y = [ zeros(N,1) ; x ];) of your code. pls, help i'm very new to matlab and it's very important for me.

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


Honglei Chen
Honglei Chen 2011년 8월 29일
Hi Susan,
Let's say I have two signals x and y. To make it simple, let's say
x = [1 1 1 1 1 ]
so if y is the same as x but delayed by 2 samples, you would see
y = [0 0 1 1 1]
for the first 5 samples. However, if you do
x+2
you will get
[3 3 3 3 3]
which is not the delayed version.
HTH
  댓글 수: 3
lamawal Jonathan
lamawal Jonathan 2014년 11월 30일
Hello All! i'm on a similar problem (zero pad a signal), the slight difference is that my signal is a vector of single row and 2400 columns. each time i zero pad, it gives me the following error;
"Error using vertical
Dimensions of matrices being concatenated are not consistent."
i even tried running your code several times but it repeats same error on line 5 (y = [ zeros(N,1) ; x ];) of your code. pls, help i'm very new to matlab and it's very important for me.
Honglei Chen
Honglei Chen 2014년 12월 1일
Your signal is a row vector, so it should be y=[zeros(1,N) x].

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

카테고리

Help CenterFile Exchange에서 Annotations에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by