simplify variable called with different source(different sheet excel), How?

1 回表示 (過去 30 日間)
M Adli Hawariyan
M Adli Hawariyan 2022 年 7 月 11 日
編集済み: M Adli Hawariyan 2022 年 7 月 11 日
Hello Everyone,
in this problem i want to call another source (sheet on excel, from second (data of 1st axis) to third (data for second axis)) which i painstackingly plan to make another variable and copy-paste code for this, but actually it's pretty much same line code and same function/variable. data generated by each sheet have different axis, so i have to separate it, with each axis. my generated data is in array and in many shapes. how to simplify this? code below is part of my line code i wrote. Attacment files is input excel and full code line i wrote
any suggestion for this problem and any part solved will help me a lot, thank you veterans.
edit: slimmed line code
data2=xlsread('input3d.xlsx',2);
data3=xlsread('input3d.xlsx',3); % <<<<<<< i want to clone code line for generating this input
%%%%%%%%%%% first part
% Force Loop System
tfl = rmmissing(data2(:,1));%total force loop
mfl_inc = zeros(b_dof,tfl); %for increase looping force
mfl_dec = zeros(b_dof,tfl); %for decrease looping force
%%% 'For Loop' looping each Cycle Force System
for p = 1:tfl
% for increase loop force
td_f1inc = length(rmmissing(data2(:,2+(p-1)*10)));
% cell data at row 2,12,22,32, ...
for u=1:td_f1inc
fdofl_ic = data2(u,2+(p-1)*10); %loop force DOFs
floop_ic = data2(u,3+(p-1)*10); %loop forces
mfl_inc(fdofl_ic,1+(p-1)) = floop_ic;
end
% for decrease loop force
td_f1dec = length(rmmissing(data2(:,4+(p-1)*10)));
for uu=1:td_f1dec
fdofl_dc = data2(uu,4+(p-1)*10);
fcalc_dc = data2(uu,5+(p-1)*10);
mfl_dec(fdofl_dc,1+(p-1)) = fcalc_dc;
end
end
act_f = matx_f(a_dof,:); %initial force(s)
afl_inc = mfl_inc(a_dof,:);%active force loop _ increase
afl_dec = mfl_dec(a_dof,:);%active force loop _ decrease
%%%%%%%%%%%% second part
%% PART 6: Looping part for generating force with tolerance >= 90%
% Addiing looping force
% matrix value tolerance
% matrix value defl pos loop, desg pos loop
m_deplo= zeros(3,tfl); % 1st row = axis
% 2nd row = DOF
% 3rd row = value
tol_value = zeros(1,tfl);%determine the lastest tolerance
calc = 0; %index for looping process
while true
rem_f = rem(calc,tfl)+1;
calc = calc + 1;
if m_tol(2,rem_f) < 0.90
act_f = act_f + afl_inc(:,rem_f);
elseif m_tol(2,rem_f) > 1
act_f = act_f + afl_dec(:,rem_f);
else % 0.9 <= v_tol(2,rem_f) < 1
act_f = act_f;
end
de_l_ans = kkk*act_f; %deflection toward acting dofs
%%% Mapping generated Deflection
% Deflection & Acting Force data each dof
de_l = zeros(b_dof,1); %empty matrix for after added force loop
f_l = zeros(b_dof,1);
for mm=1:toa_dof
dof_al = tra_dof(mm,1);
de_lv = de_l_ans(mm,1);
fl_val= act_f(mm,1);
de_l(dof_al,1) = de_l(dof_al,1)+de_lv;
f_l(dof_al,1)=f_l(dof_al,1)+fl_val;
%convert in manner of all DOFs condition,
%not only in active DOFs condition.
end
de_lx = de_l(1:6:b_dof);
de_ly = de_l(2:6:b_dof);
de_lz = de_l(3:6:b_dof);
de_th_lx = de_l(4:6:b_dof);
de_th_ly = de_l(5:6:b_dof);
de_th_lz = de_l(6:6:b_dof);
%deflection position, in terms of nodal
a6de_l = zeros(b_nod,6);
a6de_l(:,1) = de_lx;
a6de_l(:,2) = de_ly;
a6de_l(:,3) = de_lz;
a6de_l(:,4) = de_th_lx;
a6de_l(:,5) = de_th_ly;
a6de_l(:,6) = de_th_lz;
for o = 1:tfl
%%% defl axis, DOFs, and value
td_deplo=length(rmmissing(data2(:,7+(o-1)*10)));
% cell data at row 7,17,27,37,etc...
for w = 1:td_deplo
deplo_ax = data2(w,(6+(o-1)*10));
deplo_dof = data2(w,(7+((o-1)*10)));
deplo_pl = a6de_l((ceil(data2(:,7+((o-1)*10))/6)), ...
data2(:,6+((o-1)*10)));
m_deplo(1,o) = deplo_ax;
m_deplo(2,o) = deplo_dof;
m_deplo(3,o) = deplo_pl;
end
%%% tolerance
m_tol(1,:) = m_dp(2,:); %number of tollerance
tol_val = (m_deplo(3,o)/(m_idp(2,o)- m_dp(3,o)));
m_tol(2,1+(o-1)) = tol_val;
end
if all( m_tol(2,:) >= limit1 & m_tol(2,:) <= limit2)
disp('force calc is done!!')
break
end
end

回答 (0 件)

カテゴリ

Help Center および File ExchangeData Import from MATLAB についてさらに検索

製品


リリース

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by