필터 지우기
필터 지우기

finding values from matrix

조회 수: 258 (최근 30일)
Ede gerlderlands
Ede gerlderlands 2013년 7월 15일
댓글: Edwin Herrera Vasco 2020년 5월 4일
Dear All
I have a matrix which is given by A= [20 140]. I want to find the location of elements in A which are greter than 45. Here is the matlab script which I tried to work upon but it gives me the whole value rather than location with respect to each coumn.
for i = 1:20
Loc(ii,:)= find(A(i,:)>45);
end
Thank you for your help

답변 (3개)

Azzi Abdelmalek
Azzi Abdelmalek 2013년 7월 15일
편집: Azzi Abdelmalek 2013년 7월 15일
out=A(A>45)
If you want the location:
idx=find(A>45) % corresponding indices
out=A(idx)
  댓글 수: 3
Azzi Abdelmalek
Azzi Abdelmalek 2013년 7월 15일
Ok
A=randi(200,5) % Example
[ii,jj]=find(A>45)
Azzi Abdelmalek
Azzi Abdelmalek 2013년 7월 15일
편집: Azzi Abdelmalek 2013년 7월 15일
A=[0 46 10 1; 47 5 48 5; 3 19 25 70]
out=arrayfun(@(x) max(find(A(x,:)>45)),1:size(A,1))

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


Matt J
Matt J 2013년 7월 15일
[i,j]=find(A>45);
  댓글 수: 7
Matt J
Matt J 2013년 7월 15일
for k=1:size(A,1)
S(k).locs = find(A(k,:)>45);
end
Edwin Herrera Vasco
Edwin Herrera Vasco 2020년 5월 4일
Thanks!!!

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


Iain
Iain 2013년 7월 15일
A = [45 46; 42 43];
logical_address = A>45;
A(logical_address) %gives you a single 46.
linear_index = find(logical_address);
A(linear_index) % gives you a single 46.
[rowno, colno ] = sub2ind(size(A),linear_index);
A(rowno,colno ) % gives you a single 46
Looking at your code, I think you're trying to do that row by row.
find(A(i,:)>45) will give a vector containing the column number of each column which is >45 in that row of A - the length of this may vary from row to row, so you can't store the result in a simple vector - you'd need to use a cell array.

카테고리

Help CenterFile Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by