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!