Effacer les filtres
Effacer les filtres

substitute if long statements by word or letter

2 vues (au cours des 30 derniers jours)
Abdulaziz
Abdulaziz le 20 Sep 2012
Hi guys;
please can any one tell me if I can substitute the long next if statement by one letter or word because I use it a lot in my code.
if ((sigma{1}(1))^2/((SL(1))^2))-(sigma{1}(1)*sigma{1}(2)/((SL(1))^2))+((sigma{1}(2))^2/((ST(1))^2))+((sigma{1}(3))^2/(SLT)^2)>=1....
||((sigma{2}(1))^2/((SL(2))^2))-(sigma{2}(1)*sigma{2}(2)/((SL(2))^2))+((sigma{2}(2))^2/((ST(2))^2))+((sigma{2}(3))^2/(SLT)^2)>=1....
||((sigma{3}(1))^2/((SL(3))^2))-(sigma{3}(1)*sigma{3}(2)/((SL(3))^2))+((sigma{3}(2))^2/((ST(3))^2))+((sigma{3}(3))^2/(SLT)^2)>=1....
||((sigma{4}(1))^2/((SL(4))^2))-(sigma{4}(1)*sigma{4}(2)/((SL(4))^2))+((sigma{4}(2))^2/((ST(4))^2))+((sigma{4}(3))^2/(SLT)^2)>=1
break;end

Réponse acceptée

Walter Roberson
Walter Roberson le 20 Sep 2012
Write a function (or function handle) and pass it sigma and SL and ST and SLT.
You can subdivide it into two parts, as the pattern of indices is regular
F1 = @(K,sigma,SL,ST,SLT) sigma{K}(1))^2/((SL(K))^2 <etc> >=1
F2 = @(sigma,SL,ST,SLT) F1(1,sigma,SL,ST,SLT) || F1(2,sigma,SL,ST,SLT) || F1(3,sigma,SL,ST,SLT) || F1(4,sigma,SL,ST,SLT)
  2 commentaires
Abdulaziz
Abdulaziz le 21 Sep 2012
I tried to but F2 in if statement but it was wrong the message is (Conversion to logical from function_handle is not possible.) should I put any thing with the F2 that contains all the conditions.
I appreciate your time and help
Walter Roberson
Walter Roberson le 21 Sep 2012
You would use
if F2(sigma,SL,ST,SLT)

Connectez-vous pour commenter.

Plus de réponses (1)

Abdulaziz
Abdulaziz le 21 Sep 2012
Thank you very much Walter Roberson your answers always the best and must clear and specified.
I really appreciate your time.
Best, Aziz

Community Treasure Hunt

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

Start Hunting!

Translated by