Not able to figure out the way to deal with large vectors
Afficher commentaires plus anciens
Hi ,
I was doing problem and faced a issue how to deal with large vectors .
I have a function
x(n) = e0.1n [u (n + 5) – u (n − 10)]
and want to fetch the even and odd components of it to perform some operations over them .The issue i am computing them by iterating through the since to get access of the values and checking if it is odd or even and perform operation right away there.But it might be too silly to use when 'n' value goes very high .
can anyone suggest any good way for that ? Here is the Pseduo code
n=-10:1:10;
for loop
%%cheking the conditions if the current x(n)
%%value is odd or even and performing operations there only .
end
%%plot the parts
Réponse acceptée
Plus de réponses (2)
KSSV
le 20 Juil 2023
n=-10:1:10;
c1 = 0 ; c2 = 0 ;
E = zeros([],1) ;
O = zeros([],1) ;
for i = 1:length(n)
%% Get your x(n)
if mod(x(n))
c1 = c1+1 ;
% Odd do your calculations
% save the value
O(c1)=val ;
else
c2 = c2+1 ;
% even do your calculation
% save the value
E(c2) = val ;
end
end
%%plot the parts
plot(E,'r')
hold on
plot(O,b)
Alternatively, you can calculate x in the loop and later find it is even or odd using mod. This would be vectorised.
Walter Roberson
le 20 Juil 2023
mask = mod(x,2) == 1;
Now do the "odd" operations on x(mask) and do the "even" operations on x(~mask).
Catégories
En savoir plus sur Creating, Deleting, and Querying Graphics Objects dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

