Changing dimensions of matrix
3 次查看(过去 30 天)
显示 更早的评论
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
0 个评论
回答(2 个)
Image Analyst
2017-6-24
See attached demo for normxcorr2() where you can find a template matrix inside a larger matrix.
0 个评论
Image Analyst
2017-6-24
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 个评论
Image Analyst
2017-6-25
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.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!