Azzera filtri
Azzera filtri

finding values from matrix

258 visualizzazioni (ultimi 30 giorni)
Ede gerlderlands
Ede gerlderlands il 15 Lug 2013
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

Risposte (3)

Azzi Abdelmalek
Azzi Abdelmalek il 15 Lug 2013
Modificato: Azzi Abdelmalek il 15 Lug 2013
out=A(A>45)
If you want the location:
idx=find(A>45) % corresponding indices
out=A(idx)
  3 Commenti
Azzi Abdelmalek
Azzi Abdelmalek il 15 Lug 2013
Ok
A=randi(200,5) % Example
[ii,jj]=find(A>45)
Azzi Abdelmalek
Azzi Abdelmalek il 15 Lug 2013
Modificato: Azzi Abdelmalek il 15 Lug 2013
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))

Accedi per commentare.


Matt J
Matt J il 15 Lug 2013
[i,j]=find(A>45);
  7 Commenti
Matt J
Matt J il 15 Lug 2013
for k=1:size(A,1)
S(k).locs = find(A(k,:)>45);
end
Edwin Herrera Vasco
Edwin Herrera Vasco il 4 Mag 2020
Thanks!!!

Accedi per commentare.


Iain
Iain il 15 Lug 2013
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.

Categorie

Scopri di più su Resizing and Reshaping Matrices in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by