Setting a limit in an array

17 vues (au cours des 30 derniers jours)
Chris Brown
Chris Brown le 8 Fév 2017
Commenté : Chris Brown le 8 Fév 2017
I am trying to set a limit for values within an array between a set of point. I have a 3D array - say 100x100x100.
I want to set a limit of 30, so if the values are lower they become 30. I also only want to apply the values between 40 and 50 in the z axis... I have tried a few methods, but can't seem to get it to work. Any help would be appreciated.
This is what I have tried so far..
for a=1:Ini
x=100;
y=100;
z=100;
i=2:x-1;
j=2:y-1;
k=40:z-50;
F(F(j,i,k)<30)=F(F(j,i,k)<30)./F(F(j,i,k)<30)+30;
end
and separately -
for a=1:Ini
x=100;
y=100;
z=100;
i=2:x-1;
j=2:y-1;
k=40:z-50;
idx=find(F(j,i,k)<30);
idx=(idx.*0)+30;
[i,j,k]=ind2sub(size(F),idx);
end
  2 commentaires
Jan
Jan le 8 Fév 2017
Modifié(e) : Jan le 8 Fév 2017
I do not understand "apply the values between 40 and 50 in the z axis". Where does this point appear in the code? What is Ini? Why do you look at 2:x-1 only and not at the margins?
Chris Brown
Chris Brown le 8 Fév 2017
Sorry that wasn't clear. 40 and 50 referring to the z dimension - see k within the loop. Ini is number of iterations - this is part of a bigger loop, where each step I want to limit the data to 30 minimum.

Connectez-vous pour commenter.

Réponse acceptée

Alexandra Harkai
Alexandra Harkai le 8 Fév 2017
Given initial matrix F, this will floor entries at 30 in between z 'axis' (from and including) 40 and 50:
F(:,:,40:50) = max( 30, F(:,:,40:50) );

Plus de réponses (0)

Catégories

En savoir plus sur Logical 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