How to write a code in Matlab having two conditions?

4 vues (au cours des 30 derniers jours)
Samson David Puthenpeedika
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.

Réponse acceptée

Dave B
Dave B le 20 Nov 2021
Modifié(e) : Dave B le 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

Plus de réponses (0)

Catégories

En savoir plus sur MATLAB dans Help Center et File Exchange

Produits


Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by