Indexing for partial matrix
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I have a 140 x 2000 matrix. It contains a blob of area (I know the linear indices) that has known peaks. I want to find the maximum peaks in part of the blob. Specifically I want to find the maximum peak in rows 1-77 and the maximum in rows 78-140 of the blob. There may be other blobs with other peaks, so it has to be by blob area.
Should I generate the linear indices for each section (e.g. all columns, rows 1:77) and then find which are common with the blob indices? How would I do that?
0 comentarios
Respuestas (1)
Matt J
el 17 de Jul. de 2020
Editada: Matt J
el 17 de Jul. de 2020
[upperBlob,lowerBlob]=deal(yourMatrix);
upperBlob(78:end,:)=-inf;
lowerBlob(1:77,:)=-inf;
[imax1,jmax1]=find(upperBlob==max(upperBlob(:))); %upper blob max
[imax2,jmax2]=find(lowerBlob==max(lowerBlob(:))); %lower blob max
3 comentarios
Matt J
el 21 de Jul. de 2020
Editada: Matt J
el 21 de Jul. de 2020
I don't see why it wouldn't have worked. The area outside your blobs appears to be zero, while the area inside the blobs appears to be greater than zero, so the maxima I've computed above would inherently have to fall within the blobs. Regardless, you could exclude the background with a few additional lines:
A=-inf(size(yourImage));
A(blobIndices)=yourImage(blobIndices):
[upperBlob,lowerBlob]=deal(A);
upperBlob(78:end,:)=-inf;
lowerBlob(1:77,:)=-inf;
[imax1,jmax1]=find(upperBlob==max(upperBlob(:))); %upper blob max
[imax2,jmax2]=find(lowerBlob==max(lowerBlob(:))); %lower blob max
Ver también
Categorías
Más información sobre Matrix Indexing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!