Setting a limit in an array

15 次查看(过去 30 天)
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 个评论
Jan
Jan 2017-2-8
编辑:Jan 2017-2-8
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 2017-2-8
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.

请先登录,再进行评论。

采纳的回答

Alexandra Harkai
Alexandra Harkai 2017-2-8
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) );

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrices and Arrays 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by