提取二维矩阵中分块后指定的块
對一個二維矩陣I(N×N)進(jìn)行分塊(塊大小為n×n),并提取其中第ii塊中的元素
?
% 對二維矩陣I進(jìn)行[n n]分塊,取其中第ii塊中的元素
function x = getBlock(I, n, ii)
??? N = size(I, 1);
??? n1 = N / n;
??? n2 = n * n;
??? [a, b] = ind2sub([n1 n1], ii);
??? p = (b-1) * n * (n1 * n) + (a-1) * n;?? % 計(jì)算I中第ii塊之前的元素個數(shù)
??? c = 1;
??? for i = 1 : n
??????? for j = 1 : n?????????????????????? % 從p點(diǎn)向下走n步
??????????? x(c) = I(p+j);
??????????? c = c + 1;
??????? end
??????? p = p + N;????????????????????????? % 從p點(diǎn)向右走N步(因?yàn)镮中每一列有N個元素)
??? end
??? x = reshape(x, n, n);
?
測試代碼:(分別提取I中各塊的數(shù)據(jù))
clear;
clc;
I = magic(4);
N = size(I, 1);
n = 2;
blockNum = round(N * N / (n * n));????? % 取整
for ii = 1 : blockNum
??? x(:, :, ii) = getBlock(I, n, ii);?? % 取得第ii塊中的元素
end
% 輸出塊中的內(nèi)容
for ii = 1 : blockNum
??? I, ii
??? y = x(:, :, ii)
end
?
?
運(yùn)行結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的提取二维矩阵中分块后指定的块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高级I/O(七)--readv和writ
- 下一篇: excel题库做成刷题得html,实例教