time shifting
Mostra commenti meno recenti
i want the program to advance or delay the signal... by taking input from user whether to advance or delay & by what number?.... please use switch statement?.... any signal like-ramp,step,exponential in it i am using subplot to plot the original signal & shifted version of the signal..
i have a program something like this--
*clear all
close all
clc
disp('given function is')
x=(-10:10);
for i=1:1:21
if(x(i)>0)
y(i)=exp(x(i));
else
y(i)=0;
end
end
subplot(1,2,1)
stem(x,y)
disp('enter whether to advance or delay')
s=input('1>advance\n 2>Delay')
n=input('enter the no of step by which signal is to be shifted')
switch(s)
case 1
[
for i=1+n:1:21+n
if(x(i)>0)
y(i)=1;
else
y(i)=0;
end
]
case 2
[
for i=1-n:1:21-n
if(x(i)>0)
y(i)=1;
else
y(i)=0;
end
]
subplot(1,2,2)
stem(x,y)
but when i run the program it gives error in the 'for' command in case 1.
3 Commenti
Paulo Silva
il 20 Feb 2011
What kind of signal and why use switch statement?
usually switch statements are for more complex problems.
Matt Tearle
il 20 Feb 2011
Can you please explain in more detail what you're trying to do? Do you have a time base vector t and a signal y(t) and you want the user to input a dt... and then do... what with it exactly?
ap singh
il 21 Feb 2011
Risposta accettata
Più risposte (6)
For detailed post and complete code visit: https://www.swebllc.com/time-shifting-in-matlab-code-output/
Walter Roberson
il 21 Feb 2011
0 voti
You cannot have an 'if' statement inside of [] . But you don't need to mark the beginning and end of the code for an individual case: all code is executed until the next 'case' or unmatched 'end'.
1 Commento
ap singh
il 21 Feb 2011
Matt Tearle
il 21 Feb 2011
On top of the syntax issues Walter and Jan point out...
1. Why use switch? You could easily use a simple if/|else|. But why not just flip the sign of the offset. Something like n = sign(1.5-s)*n
2. You can make the unshifted signal in a couple of lines:
y = exp(x);
y(x<=0) = 0;
3. What you have in the switches will cause an error because it will try to reference x(22) (or higher), but x only has 21 elements. What are you trying to do here? I would have thought that what you want mathematically is y(x+dx). In which case you could repeat the above lines with a shifted x:
x2 = x + dx;
y = exp(x2);
y(x2<=0) = 0;
Also, what you have there sets y to just 0 or 1, rather than 0 or exp(x). Was that what you intended?
1 Commento
ap singh
il 21 Feb 2011
ap singh
il 21 Feb 2011
0 voti
Saurabh
il 15 Set 2024
0 voti
clear all
close all
clc
disp('given function is')
x=(-10:10);
for i=1:1:21
if(x(i)>0)
y(i)=exp(x(i));
else
y(i)=0;
end
end
subplot(1,2,1)
stem(x,y)
disp('Enter whether to advance or delay')
s=input('1>advance\n 2>Delay=\n')
n=input('enter the no of step by which signal is to be shifted=')
switch(s)
case 1
for i=1+n:1:21+n
if(x(i)>0)
y(i)=exp(x(i));
else
y(i+n)=0;
end
end
case 2
for i=1-n:1:21-n
if(x(i)>0)
y(i)=exp(x(i));
else
y(i-n)=0;
end
end
end
subplot(1,2,2)
stem(x,y)
Categorie
Scopri di più su Signal Generation in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
