how to write a iterative code?

3 visualizaciones (últimos 30 días)
Mohammad Sadegh Nasirianfar
Mohammad Sadegh Nasirianfar el 27 de Abr. de 2022
Comentada: Mohammad Sadegh Nasirianfar el 27 de Abr. de 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 comentarios
Torsten
Torsten el 27 de Abr. de 2022
If lc does not change, n won't change either. Thus delta_n = 0.
Mohammad Sadegh Nasirianfar
Mohammad Sadegh Nasirianfar el 27 de Abr. de 2022
Ic changes. it is a matrix with one column and j rows and for each rows I have to control it

Iniciar sesión para comentar.

Respuesta aceptada

David Hill
David Hill el 27 de Abr. de 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 comentarios
David Hill
David Hill el 27 de Abr. de 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 el 27 de Abr. de 2022
thanks a lot.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Adding custom doc en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by