finding values from matrix

687 次查看(过去 30 天)
Ede gerlderlands
Ede gerlderlands 2013-7-15
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

请先登录,再进行评论。


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