How to Remove Elements in a Matrix Less than a Threshold?

조회 수: 63 (최근 30일)
Juan Miguel
Juan Miguel 2012년 1월 28일
댓글: Marco Noll 2018년 3월 20일
Hi,
I have a 3000 x 3000 matrix and want to remove all elements inside the matrix that are less than a specific value, .5 for example.
How would I go about this?
Here's what I have so far but it doesn't seem to work:
function y = highestValues(a,b)
% a is the matrix
% b is the threshold value
[sortedValues,~] = sort(a,1,'descend');
exclude = sortedValues < b;
sortedValues(exclude) = [];
highestValue = sortedValues;
clearvars n sortedValues;
y = highestValue;
Thank you!

채택된 답변

Wayne King
Wayne King 2012년 1월 28일
You can just do this: (removing all entries larger in absolute value than 2)
x = randn(10,10);
indices = find(abs(x)>2);
x(indices) = [];
But then x will be a vector and no longer a matrix of the same size you started with:
You can also do this:
x = randn(10,10);
indices = find(abs(x)>2);
x(indices) = NaN;
This will maintain your matrix.
  댓글 수: 3
Pierre Lonfat
Pierre Lonfat 2017년 4월 20일
Do not work ! Matrix is not maintained ...
hbabar
hbabar 2017년 5월 25일
Ofcourse if you remove the elements, which was what was asked in the question, the matrix will not be mantained. If you just want to replace those values with a zero just do this:
A.*(A>Threshold))

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Mohiuddin  Ahmed
Mohiuddin Ahmed 2012년 9월 26일
I have a matrix like this : X =
5.1000 3.5000
4.9000 3.0000
4.7000 3.2000
4.6000 3.1000
5.0000 3.6000
5.4000 3.9000
4.6000 3.4000
5.0000 3.4000
4.4000 2.9000
4.9000 3.1000
I would like to delete an element from the matrix. how can I do that ?
  댓글 수: 3
Mohiuddin  Ahmed
Mohiuddin Ahmed 2012년 10월 31일
well, if I want to delete an entire row from the matrix X? How can I do that ?
Marco Noll
Marco Noll 2018년 3월 20일
%lets assume we have some time
%and measurement data and want
%to remove any data that is out of range
%create some sample matrix
c= [1:6;100:105]
%create a mask matrix with all 1 where criteria matches
mask = c>102 & c<105
%use the second row of the mask to remove the data columns
c(:,mask(2,:))
%should work the same when transposing it

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Operating on Diagonal Matrices에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by