How to optimise the code by using condition/loop ?

2 ビュー (過去 30 日間)
Jeevan Kumar Bodaballa
Jeevan Kumar Bodaballa 2020 年 11 月 3 日
I have 20 mat files contains two varibles each(let say A,B).
I am calculating linear model between two varibles with fitlm function and I got output like r_square and all
and then I am writing them into TEXT file. I have long code for that
Instead writing each varibles, I want to optimise the code by writing loop/condition
Here is the code
clear;close all
% loading files
load f1_pH_con.mat;load f2_pH_con.mat;load f3_pH_con.mat
load f4_pH_con.mat;load f5_pH_con.mat;load f6_pH_con.mat
load f7_pH_con.mat;load f8_pH_con.mat;load f9_pH_con.mat
load f10_pH_con.mat;load f11_pH_con.mat;load f12_pH_con.mat
load f13_pH_con.mat;load f14_pH_con.mat;load f15_pH_con.mat
load f16_pH_con.mat;load f17_pH_con.mat;
load f18_pH_con.mat;load f19_pH_con.mat;load f20_pH_con.mat
% removing errors(making values NaN if any lesss than zero)
f1_pH(f1_pH<=0)=NaN;f2_pH(f2_pH<=0)=NaN;f3_pH(f3_pH<=0)=NaN;
f4_pH(f4_pH<=0)=NaN;f5_pH(f5_pH<=0)=NaN;f6_pH(f6_pH<=0)=NaN;
f7_pH(f7_pH<=0)=NaN;f8_pH(f8_pH<=0)=NaN;f9_pH(f9_pH<=0)=NaN;
f10_pH(f10_pH<=0)=NaN;f11_pH(f11_pH<=0)=NaN;f12_pH(f12_pH<=0)=NaN;
f13_pH(f13_pH<=0)=NaN;f14_pH(f14_pH<=0)=NaN;f15_pH(f15_pH<=0)=NaN;
f16_pH(f16_pH<=0)=NaN;f17_pH(f17_pH<=0)=NaN;f18_pH(f18_pH<=0)=NaN;
f19_pH(f19_pH<=0)=NaN;f20_pH(f20_pH<=0)=NaN;
f1_con(f1_con<=0)=NaN;f2_con(f2_con<=0)=NaN;f3_con(f3_con<=0)=NaN;
f4_con(f4_con<=0)=NaN;f5_con(f5_con<=0)=NaN;f6_con(f6_con<=0)=NaN;
f7_con(f7_con<=0)=NaN;f8_con(f8_con<=0)=NaN;f9_con(f9_con<=0)=NaN;
f10_con(f10_con<=0)=NaN;f11_con(f11_con<=0)=NaN;f12_con(f12_con<=0)=NaN;
f13_con(f13_con<=0)=NaN;f14_con(f14_con<=0)=NaN;f15_con(f15_con<=0)=NaN;
f16_con(f16_con<=0)=NaN;f17_con(f17_con<=0)=NaN;f18_con(f18_con<=0)=NaN;
f19_con(f19_con<=0)=NaN;f20_con(f20_con<=0)=NaN;
% calculating linear model
mdl1 = fitlm(f1_pH,f1_con);mdl2 = fitlm(f2_pH,f2_con)
mdl3 = fitlm(f3_pH,f3_con);mdl4 = fitlm(f4_pH,f4_con)
mdl5 = fitlm(f5_pH,f5_con);mdl6 = fitlm(f6_pH,f6_con)
mdl7 = fitlm(f7_pH,f7_con);mdl8 = fitlm(f8_pH,f8_con)
mdl9 = fitlm(f9_pH,f9_con);mdl10 = fitlm(f10_pH,f10_con)
mdl11 = fitlm(f11_pH,f11_con);mdl12 = fitlm(f12_pH,f12_con)
mdl13 = fitlm(f13_pH,f13_con);mdl14 = fitlm(f14_pH,f14_con)
mdl15 = fitlm(f15_pH,f15_con);mdl16 = fitlm(f16_pH,f16_con)
mdl17 = fitlm(f17_pH,f17_con);mdl18 = fitlm(f18_pH,f18_con)
mdl19 = fitlm(f19_pH,f19_con);mdl20 = fitlm(f20_pH,f20_con)
% converting to char for writing into txt file
f1 = evalc('mdl1');f2 = evalc('mdl2');f3 = evalc('mdl3');f4 = evalc('mdl4');
% writing into txt file
fid = fopen(fullfile('regressoion.txt'),'wt');
fprintf(fid,'%s',T);
fclose(fid);

採用された回答

Rik
Rik 2020 年 11 月 3 日
for n=1:20
S=load(sprintf('f%d_pH_con.mat',n));
f_pH{n}=S.(sprintf('f%d_pH',n));%undo the numbered variable mess
f_con{n}=S.(sprintf('f%d_con',n));%undo the numbered variable mess
f_pH{n}(f_pH{n}<=0)=NaN;
f_con{n}(f_con{n}<=0)=NaN;
mdl{n}=fitlm(f_pH{n},f_con{n});
end
Now you have everything neatly indexed, so you can redesing the way you convert your models to char arrays (not string objects, as your comment claims).
  5 件のコメント
Jeevan Kumar Bodaballa
Jeevan Kumar Bodaballa 2020 年 11 月 3 日
I understand. Thank you :)

サインインしてコメントする。

その他の回答 (0 件)

Community Treasure Hunt

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

Start Hunting!

Translated by