Changing dimensions of matrix

3 visualizzazioni (ultimi 30 giorni)
MSP
MSP il 24 Giu 2017
Commentato: Image Analyst il 25 Giu 2017
Say that we have two matrices.One is a 32*15 matrix and the other is 66*31 matrix.It is required to determine where this(32,15) matrix is located on the (66,31) matrix. Then you get the 3rd matrix with of size (66,31) with values known at the (32,15) positions.Then how do I fill the matrix with interp2

Risposte (2)

Image Analyst
Image Analyst il 24 Giu 2017
See attached demo for normxcorr2() where you can find a template matrix inside a larger matrix.

Image Analyst
Image Analyst il 24 Giu 2017
Here's one way using isequal().
% Create sample data
bigMatrix = randi(9, 66, 31)
% Get smaller 32*15 matrix from location 3,5, so we'll know it definitely exists in bigMatrix.
smallMatrix = bigMatrix(3:34, 5:19)
% Now find small amtrix in big matrix
for col = 1 : 17
for row = 1 : 35
subMatrix = bigMatrix(row:row+31, col:col+14);
if isequal(subMatrix, smallMatrix)
message = sprintf('Small matrix found in large matrix at location row=%d, col = %d', row, col);
uiwait(helpdlg(message));
end
end
end
If you know the match occurs only once, you can put a "break;" after the uiwait().
  4 Commenti
MSP
MSP il 25 Giu 2017
I think that part then could be filled up will then be inward interpolation maybe regionfill
Image Analyst
Image Analyst il 25 Giu 2017
How? There is no surrounding region to fill it in if you just have zeros going out to the edge of the image. You'd at least need a line of valid image data going around the edge of the data to use regionfill(), though I've never tried it with a mask that touches the edge of the image. Maybe it won't throw an error (won't know until I try) but I think the results, if any, would be unpredictable and unreliable.

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by