how to write a iterative code?

5 Ansichten (letzte 30 Tage)
Mohammad Sadegh Nasirianfar
Mohammad Sadegh Nasirianfar am 27 Apr. 2022
#MATLAB
I want to write a code and I don’t know with which command is better.
Put n=1
If Ic<1.64, n=0.5
If 1.64<Ic<3.3, n=(Ic-1.64)0.3+0.5
If Ic>3.3, n=1
Iterate until the change in delta-n<0.01
  2 Kommentare
Torsten
Torsten am 27 Apr. 2022
If lc does not change, n won't change either. Thus delta_n = 0.
Mohammad Sadegh Nasirianfar
Mohammad Sadegh Nasirianfar am 27 Apr. 2022
Ic changes. it is a matrix with one column and j rows and for each rows I have to control it

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

David Hill
David Hill am 27 Apr. 2022
Not sure what you are doing, but can find the n-vector all at once without iterating.
n=ones(size(lc));
n(lc<1.64)=.5;
n(lc>1.64&lc<3.3)=(lc(lc>1.64&lc<3.3)-1.64)*.3+.5;
f=find(diff(n)<.01,1);%first place where diff(n)<.01
  4 Kommentare
David Hill
David Hill am 27 Apr. 2022
fs = readmatrix('CPTU1.xlsx','Sheet','results','Range','E3:E2993');
qc = readmatrix('CPTU1.xlsx','Sheet','results','Range','D3:D2993');
sigmavo = readmatrix('CPTU1.xlsx','Sheet','results','Range','J3:J2993');
sigmaprimevo = readmatrix('CPTU1.xlsx','Sheet','results','Range','J3:J2993');
Q= (qc-sigmavo)/100.*(100./sigmaprimevo)^n;
F= fs./(qc-sigmavo)*100;
Ic= ((3.47-log10(Q)).^2+(1.22+log10(F)).^2).^0.5;
n=ones(size(Ic));
n(lc<1.64)=.5;
n(lc>1.64&lc<3.3)=(lc(lc>1.64&lc<3.3)-1.64)*.3+.5;
Mohammad Sadegh Nasirianfar
Mohammad Sadegh Nasirianfar am 27 Apr. 2022
thanks a lot.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Tags

Produkte


Version

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by