how to store the conditional loop data
Afficher commentaires plus anciens
sir/ madam please correct me.
ut=rand(15,1);
uy=([0.84;0.384;0.784]);
eval (['U_y','=[u_y;u_y;u_y;u_y;u_y]']);
for n=1:15
if ut(n,1)<=U_y(n,1)
ut(n,1)=ut(n,1);
else
ut(n,1)=0;
end
utt(:,1)=ut(n,1); %% i want to store the ut as a utt in a column
end
4 commentaires
Jan
le 29 Avr 2022
Avoid cluttering unneeded parentheses:
uy=([0.84;0.384;0.784]);
% ^ ^ not useful
Do not use eval() in general, most of all if it can be replaced directly:
% eval (['U_y','=[u_y;u_y;u_y;u_y;u_y]']); Nope
U_y = [u_y; u_y; u_y; u_y; u_y];
% Or more clearly:
U_y = repmat(uy, 5, 1);
It is not useful to write code, which does not do anything:
ut(n,1)=ut(n,1); % ??? Why?
Chaudhary P Patel
le 29 Avr 2022
Star Strider
le 29 Avr 2022
My code tests each element of ‘ut’ against ‘U_y’ and sets it to zero if the condition is satisfied.
What result do you want?
Jan
le 29 Avr 2022
@Chaudhary P Patel: The line ut(n,1)=ut(n,1) replaced the n.th element of the vector ut by the n.th element of the vector ut. This is a waste of time only.
An option to avoid this (see others in the already provided answers):
for n = 1:15
if ut(n) <= U_y(n)
utt(n) = ut(n);
else
utt(n) = 0;
end
end
Or with a proper pre-allocation, to avoid the time-consuming growing of arrays:
utt = zero(15, 1); % The default value is 0 now
for n = 1:15
if ut(n) <= U_y(n)
utt(n) = ut(n);
end
end
Réponse acceptée
Plus de réponses (1)
Jan
le 29 Avr 2022
Your cleaned code:
ut = rand(15, 1);
uy = [0.84; 0.384; 0.784];
U_y = repmat(uy, 5, 1);
for n = 1:15
if ut(n) > U_y(n)
ut(n) = 0;
end
utt(n) = ut(n);
% ^ insert an index here
end
Remember, that X(k,1) can be written as X(k), which looks a little bit cleaner.
Instead of the loop, you can write:
utt = ut .* (ut <= U_y);
The expression in the parentheses is a vector of 1s and 0s and the elementwise multiplication set the wanted elements to 0.
Catégories
En savoir plus sur Matrix Indexing dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!