How to check if an integer is above or below 0.5 continuously ?
3 views (last 30 days)
Show older comments
Hello everyone.
I have a periodic signal where I try to condition the signal's behavior to be zero in certain parts.
What I'm trying to do exactly is this:
The period of the signal is T.
I want the signal to have some value when 0<time<T/2 and I want signal to have a value of zero when T/2 <= time < T. But I want to do this continuously until the time stops. So for example signal should have a value of zero when 3T/2 <= time < 2T as well.
To put it in words, I want to make a periodic wave's second half equal to zero in every cycle.
How may I do this ?
If it is hard to understand with text:
Red parts should be zero.
0 Comments
Accepted Answer
Dyuman Joshi
on 8 Dec 2022
Edited: Dyuman Joshi
on 8 Dec 2022
If you have numeric data, you can do something like this -
x=0:0.01:3;
y=abs(sin(pi*x));
%original plot
plot(x,y,'k-')
hold on
%modified plot
y(ceil(x)==round(x))=0;
plot(x,y,'b.')
Note - use a tolerance based method rather than == for floating point numeric values
%for example
y(abs(ceil(x)-round(x))<1e-4)=0
3 Comments
Dyuman Joshi
on 8 Dec 2022
Edited: Dyuman Joshi
on 8 Dec 2022
change ceil to floor
x=0:0.01:3;
y=abs(sin(pi*x));
%original plot
plot(x,y,'k-')
hold on
%modified plot
y(abs(floor(x)-round(x))<1e-4)=0;
plot(x,y,'b.')
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!