how to generate N times many of line code 'for loop'?

조회 수: 2 (최근 30일)
M Adli Hawariyan
M Adli Hawariyan 2022년 7월 3일
편집: M Adli Hawariyan 2022년 7월 3일
Hello, i need some guidance for this type of problem. here's the detail:
as we can see in code line; i have three types of force in the shape of matrix, there are:
a. Increase Loop System (first and second force loop system)
b. Decrease Loop System (first and second force loop system)
there are 2 force loop systems
small notes: input is manually write down in excel.
For first loop; cosist of:
A. Force Loop Increase
  1. matxfl_inc1 = empty matrix for put the value [ zeros(max(big_dof),1)]
  2. td_f1inc = search the 'length', for looping, input from excel
  3. fdofl_1inc = for putting excatly the force position to
  4. floop_1inc = forces
  5. matxfl_inc1 = put all forces into here
  6. afl_inc1= to describe simply, it's almost same for matxfl_inc1, but we only take some of matxfl_inc1, [matxfl_inc1(a_dof,1)]
b. Force Loop Decrease (more/less is same from above, but different name and different place of excel to get called)
  1. matxfl_dec1 = empty matrix for put the value [ zeros(max(big_dof),1)]
  2. td_f1dec = search the 'length' for looping, input from excel
  3. fdofl_1dec = for putting excatly the force position to
  4. floop_1dec = forces
  5. matxfl_dec1 = put all forces into here
  6. afl_dec1= to describe simply, it's almost same for matxfl_inc1, but we only take some of matxfl_inc1, [matxfl_dec1(a_dof,1)]
For Henceforth of loop, it is basically the same, but with different name (matxfl_inc2, td_f2inc, ..., matxfl_dec2, td_f2dec, ... , matxfl_inc3, and so on) and also more/less is same from above, but different name and different place of excel to get called)
for input is called from excel (in my code is data2, at sheet 2), with details below
  • first column (assume at A3 like my input in excel) for how much looping of variety, ex: in need 7 varieties, so i want to generate 7 of both increase and decrease force loop system
  • from B3 to K3 ( 2 to 11) in excel is for first loop;
  • from L3 to U3 (12 to 21) in excel is for second loop
for details for code we can see the line code below
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% First Force Loop System
% Loop Increase Forces Placement
matxfl_inc1 = zeros(max(big_dof),1); %empty matx for added looping force
td_f1inc = length(rmmissing((data2(:,2))));
for u=1:td_f1inc
fdofl_1inc = data2(u,2); %fdof_l= force loop dofs being read
floop_1inc = data2(u,3); %force_loop= added forces for loop
matxfl_inc1(fdofl_1inc,1) = matxfl_inc1(fdofl_1inc,1) + floop_1inc;
end
afl_inc1=matxfl_inc1(a_dof,1); %defined added loop force ...
%at active dofs
% Loop Decrease Force Placements
matxfl_dec1 = zeros(max(big_dof),1); %empty matx for added looping force
td_f1dec = length(rmmissing((data2(:,4))));
for u=1:td_f1dec
fdofl_1dec = data2(u,4); %fdof_l= force loop dofs being read
floop_1dec = data2(u,5); %force_loop= added forces for loop
matxfl_dec1(fdofl_1dec,1) = matxfl_dec1(fdofl_1dec,1) + floop_1dec;
end
afl_dec1=matxfl_dec1(a_dof,1); %defined added loop force...
%at active dofs
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Second Force Loop System
% Loop Increase Forces Placement
matxfl_inc2 = zeros(max(big_dof),1); %empty matx for added looping force
td_f2inc = length(rmmissing((data2(:,12))));
for u=1:td_f2inc
fdofl_2inc = data2(u,12); %fdof_l= force loop dofs being read
floop_2inc = data2(u,13); %force_loop= added forces for loop
matxfl_inc2(fdofl_2inc,1) = matxfl_inc2(fdofl_2inc,1) + floop_2inc;
end
afl_inc2=matxfl_inc2(a_dof,1); %defined added loop force ...
%at active dofs
% Loop Decrease Force Placements
matxfl_dec2 = zeros(max(big_dof),1); %empty matx for added looping force
td_f2dec = length(rmmissing((data2(:,14))));
for u=1:td_f2dec
fdofl_2dec = data2(u,14); %fdof_l= force loop dofs being read
floop_2dec = data2(u,15); %force_loop= added forces for loop
matxfl_dec2(fdofl_2dec,1) = matxfl_dec2(fdofl_2dec,1) + floop_2dec;
end
afl_dec2=matxfl_dec2(a_dof,1); %defined added loop force...
%at active dofs
what i have to create is N-Loop System that consists of N-times Increase Loop System, and N-times Decrease Loop System. assume that i want to have 7 varies of Loop System (Inc and Dec), so i have to generate 7 for each of them. dont forget that each N-Loop System have a different input. ex: ' fdofl_1dec = data2(u,4); ' and ' fdofl_2dec = data2(u,14) ' . data2(u,1) is for knowing how my force variety i want to do ( N, example N=7)
notes: i create this with input from excel with some benefits. if i want my first loop system have 50 forces of increase and decrease, i just write it in column, so to make N-Loop system write sidewise is a must
full code you can see at the attachments
thank, much love.
  댓글 수: 5
M Adli Hawariyan
M Adli Hawariyan 2022년 7월 3일
편집: M Adli Hawariyan 2022년 7월 3일
Hello jan, as you can see all of these matrices in array form, lets say i need 1000 loops of this
  • matxfl_inc1 = empty matrix for put the value [ zeros(max(big_dof),1)]
  • td_f1inc = search the 'length', for looping, input from excel
  • fdofl_1inc = for putting excatly the force position to
  • floop_1inc = forces
  • matxfl_inc1 = put all forces into here
  • afl_inc1
  • matxfl_dec1 = empty matrix for put the value [ zeros(max(big_dof),1)]
  • td_f1dec = search the 'length' for looping, input from excel
  • fdofl_1dec = for putting excatly the force position to
  • floop_1dec = forces
  • matxfl_dec1 = put all forces into here
  • afl_dec1= to describe simply, it's almost same for matxfl_inc1, but we only take some of matxfl_inc1, [matxfl_dec1(a_dof,1)]
so if i want to have 1000 loops, i have to make value for each of them 1000 times with 1000 different names. lets take matxfl_inc1 as example, so i need matxfl_inc1, matxfl_inc2, matxfl_inc3, ...,matxfl_inc1000 which each of them in array (:,1) form.
would you like to give some guidance about this?
EDIT: thanks Jan, i manage to generate matx_inc for all data in shape of array form (big_dof,N)
Jan
Jan 2022년 7월 3일
No, do not create variables by hiding an index in their names, but use arrays:
matxfl_inc1 % Bad
matxfl_inc{1} % Good
matxfl_inc(:, :, 1); % Good, or how many dimensions you need
If all arrays have the same size, use a mutli-dimensional array, a cell array otherwise.
complicated methods to hide an index in the name of a variable demands for creating even more complicated methods to access them later on. Using indices is trivial and easy to expand.

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

답변 (0개)

카테고리

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

제품


릴리스

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by