Setting a limit in an array

14 views (last 30 days)
Chris Brown
Chris Brown on 8 Feb 2017
Commented: Chris Brown on 8 Feb 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 Comments
Jan
Jan on 8 Feb 2017
Edited: Jan on 8 Feb 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 on 8 Feb 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.

Sign in to comment.

Accepted Answer

Alexandra Harkai
Alexandra Harkai on 8 Feb 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) );

More Answers (0)

Categories

Find more on Matrices and Arrays in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!