Replace the elements of a matrix under specific conditions
3 ビュー (過去 30 日間)
古いコメントを表示
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.
0 件のコメント
採用された回答
Image Analyst
2017 年 10 月 7 日
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;
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Tables についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!