How to write a code in Matlab having two conditions?

1 view (last 30 days)
how to create rectangle filter with following condition;
f(t)= 1; -0.1secs< t < 0.1 secs
f(t)= 0; otherwise
Below i have tried but getting error.
n=2048; %samples
fs=1024; %sampling frequency
T=1/fs;
t = (0:n-1)*T;
F=zeros(length(t));
for i=0:length(t)
if t(i)<=0.1
F(i)=1;
else
F(i)=0;
end
end
Array indices must be positive integers or logical values.

Accepted Answer

Dave B
Dave B on 20 Nov 2021
Edited: Dave B on 20 Nov 2021
In MATLAB indices start with 1:
n=2048; %samples
fs=1024; %sampling frequency
T=1/fs;
t = (0:n-1)*T;
F=zeros(length(t));
for i=1:length(t)
if abs(t(i))<=0.1 % technically better because it covers the negative case
F(i)=1;
else
F(i)=0; % not really needed because you initialized F with all zeros...
end
end
But note, you don't need a loop for this kind of thing:
F2=zeros(length(t));
F2(abs(t)<=.1)=1;
isequal(F2,F)
ans = logical
1

More Answers (0)

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!