提取二维矩阵中分块后指定的块

对一个二维矩阵I(N×N)进行分块(块大小为n×n),并提取其中第ii块中的元素

 

% 对二维矩阵I进行[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;   % 计算I中第ii块之前的元素个数
    c = 1;
    for i = 1 : n
        for j = 1 : n                       % 从p点向下走n步
            x(c) = I(p+j);
            c = c + 1;
        end
        p = p + N;                          % 从p点向右走N步(因为I中每一列有N个元素)
    end
    x = reshape(x, n, n);

 

测试代码:(分别提取I中各块的数据)

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

% 输出块中的内容
for ii = 1 : blockNum
    I, ii
    y = x(:, :, ii)
end

 

 

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值