Find values between 50th to 75th percentile.

1 次查看(过去 30 天)
I have 80*80 matrix, from which I want to extract values which lie under 50th to 75th percentile. I want to write a code such that the new matrix now formed have data which lie under 50th to 75th percentile and other values will be shown as NaN.Something like this:
for i=1:80;
for j=1:80;
if (My_matrix(i,j)<=prctile(My_matrix(i,j),25)&(My_matrix(i,j),50)=xx;
else My_matrix(i,j)==NaN
end;
end;
end;
Where, My_matrix is 2d matrix of 80*80 size. Please correct the code i have written, or tell how i can find the values which lies between 25th to 50th percentile

采纳的回答

Andrei Bobrov
Andrei Bobrov 2017-10-30
编辑:Andrei Bobrov 2017-10-30
t = prctile(My_matrix,25) > My_matrix | prctile(My_matrix,75) < My_matrix;
out = My_matrix;
out(t) = nan;
  2 个评论
Pritha Pande
Pritha Pande 2017-10-30
编辑:Pritha Pande 2017-10-30
Thank you . Now, I have attached a file of 80*80 matrix and for this file if have applied your code like this
for i=1:80;
for j=1:80;
t(i,j) = prctile(ans(i,j),25) > ans(i,j) | prctile(ans(i,j),75) < ans(i,j);
out(i,j) = t(i,j);
out(t) = nan;
end;
end;
then output showing all the matrix value as zero. How is the mistake i am making? Please rectify.
Sachindra Dhanapala Arachchige
As I understand Andrei's code outputs a logical matrix (0 and 1) which satisfies the condition given in the first line of his code. By multiplying the 'My_matrix' with 't' one could get the values within 'My_matrix' which satisfy the above condition. Try the following and see. B = My_matrix.*t;

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by