how to store the conditional loop data

조회 수: 3 (최근 30일)
Chaudhary P Patel
Chaudhary P Patel 2022년 4월 29일
댓글: Jan 2022년 4월 29일
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
Star Strider
Star Strider 2022년 4월 29일
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
Jan 2022년 4월 29일
@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

댓글을 달려면 로그인하십시오.

채택된 답변

Star Strider
Star Strider 2022년 4월 29일
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
utt = 15×1
0 0 0.6317 0.7311 0.1069 0.5889 0.5515 0 0.2595 0.3677
No loops!
.

추가 답변 (1개)

Jan
Jan 2022년 4월 29일
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.

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by