Replace the elements of a matrix under specific conditions

3 vues (au cours des 30 derniers jours)
Camilo Granda
Camilo Granda le 7 Oct 2017
Commenté : Camilo Granda le 7 Oct 2017

I have an Esi matrix and want to replace it by the following parameters:

  • if the values of Esi are greater or equal than f_y/Es replace the values with f_y
  • if the values of Esi are lesser or equal than -f_y/Es replace the values with -f_y
  • and for the values in between -f_y/Es<Esi<+f_y/Es i want to replace them by: Esi*Es

So long I have this:

fsi=zeros(size(Esi));
fsi(Esi>=f_y/Es)=f_y;
fsi(Esi<=-f_y/Es)=-f_y;
fsi(-f_y/Es<Esi<f_y/Es)=Esi*Es;

But is not working.

Réponse acceptée

Image Analyst
Image Analyst le 7 Oct 2017
You can't do this
-f_y/Es < Esi < f_y/Es
You need to do it in two steps, like (-f_y/Es < Esi) & (Exi < f_y/Es). So try this:
fsi=zeros(size(Esi));
fsi(Esi>=f_y/Es)=f_y;
fsi(Esi<=-f_y/Es)=-f_y;
fsi((-f_y/Es < Esi) & (Exi < f_y/Es)) = Esi * Es;
Or perhaps a little more readable and less cryptic for people reading your code.
fsi = zeros(size(Esi));
indexesToReplace = Esi >= f_y/Es;
fsi(indexesToReplace) = f_y;
indexesToReplace = Esi <= -f_y/Es;
fsi(indexesToReplace) = -f_y;
indexesToReplace = (-f_y/Es < Esi) & (Exi < f_y/Es);
fsi(indexesToReplace) = Esi * Es;

Plus de réponses (0)

Catégories

En savoir plus sur Tables dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by