Central part of a matrix
1 次查看(过去 30 天)
显示 更早的评论
Hello,
If a have a Matrix M and I want to create a new one, call it Central_M, which should be the central part of M and of a defined size s, how can I do it?
M_central = ?
Thanks in advance for your reply.
2 个评论
回答(2 个)
Jos (10584)
2015-2-25
Something like this?
M = spiral(10) % test matrix
S = 2 % s elements around the central position
% the resulting matrix will be 2*S+1 squared in size
dx = -S:S ;
RC0 = ceil(size(M)/2) % central position
OUT = M(RC0(1)+dx, RC0(2)+dx)
RAGHAVENDRA
2015-2-25
编辑:Guillaume
2015-2-25
M_central=M(floor(size(M,1)/2)-floor(s/2):floor(size(M,1)/2)+floor(s/2),floor(size(M,2)/2)-floor(s/2):floor(size(M,2)/2)+floor(s/2));
The above instruction will work, you can use 'round' instead of 'floor' to change the matrix indices accordingly.
3 个评论
RAGHAVENDRA
2015-2-25
编辑:RAGHAVENDRA
2015-2-25
It is working perfectly for me, this is the example that i have tried
M=randi(5,[10 10]);
s=2;
M_central=M(floor(size(M,1)/2)-floor(s/2):floor(size(M,1)/2)+floor(s/2),floor(size(M,2)/2)-floor(s/2):floor(size(M,2)/2)+floor(s/2))
What is the error message?
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!