how to store the conditional loop data
    8 views (last 30 days)
  
       Show older comments
    
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 Comments
  Star Strider
      
      
 on 29 Apr 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
      
      
 on 29 Apr 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
Accepted Answer
  Star Strider
      
      
 on 29 Apr 2022
        If I understand the code correctly, it can be simply stated as: 
ut=rand(15,1);
u_y=([0.84;0.384;0.784]);
U_y = [u_y;u_y;u_y;u_y;u_y];                            % Create Column Vector
utt = ut;                                               % Copy 'ut' to 'utt'
utt(ut>U_y) = 0                                         % Set Appropriate Elements To Zero
No loops!  
.
0 Comments
More Answers (1)
  Jan
      
      
 on 29 Apr 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.
0 Comments
See Also
Categories
				Find more on Startup and Shutdown in Help Center and File Exchange
			
	Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

