pad matrix to a particular size

112 次查看(过去 30 天)
I have a matrix M of size m x n
m and n may or may not be equal - M can be rectangular or square matrix - where m and n are less than 150,
I wanted to resize M to 150 x 150 by padding border with zeros, such that the m x n will come in the center
M_resized = padarray(M,[x y],0,'both');
how to compute value for x and y such that i can use the same line of code for any matrix,
or is there any another way to do?

采纳的回答

Image Analyst
Image Analyst 2021-5-13
You can use the 'pre' and 'post' options to pad each side with the desired number of zeros.
Or use this "trick"
g = ones(150, 150); % Original matrix is 150 x 150
[rows, columns] = size(g);
m = 153
n = 152;
rowsPre = floor((m - rows)/2)
collsPre = floor((n - columns)/2)
% Pad it out with 334 rows top and bottom,
% and 281 columns left and right.
P = padarray(g, [rowsPre, collsPre], 0, 'both');
whos P % Originally 152x152 padded with zeros all around.
% Not the size we want yet. We want 153x152
% Here comes the "trick" to expand out the lower right corner with zeros.
P(m, n) = 0;
whos P % Now 153 x 152
  3 个评论
Image Analyst
Image Analyst 2022-8-27
For a 3-D array you might be able to use the same trick.
P(256, 256, 299) = 0;
Or, if that doesn't work, you'd just have to use padarray on each plane and then reassemble into a 3-D array.
Hamza Mehmood
Hamza Mehmood 2022-8-27
Yeah that worked and results prove that padding the ROI to the feature activation dimension may not be the best way to compare using ssim.
Ill be instead reversing the process, cropping the 3D feature activation matrix down to 25x25x25 to ROI 3D coordinates and then compare using ssim.
Thank You !
Much Appreciated.

请先登录,再进行评论。

更多回答(1 个)

David Hill
David Hill 2021-5-13
assuming m and n are both even.
M_resized=padarray(M,[(150-size(M,1))/2 (150-size(M,2))/2],0,'both');
  1 个评论
Elysi Cochin
Elysi Cochin 2021-5-13
编辑:Elysi Cochin 2021-5-13
what if both are odd or any one value is odd
say 71 x 100
or 97 x 97
or 63 x 89

请先登录,再进行评论。

标签

Community Treasure Hunt

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

Start Hunting!

Translated by