gpt4 book ai didi

matlab - For 循环将矩阵拆分为大小相等的子矩阵

转载 作者:太空宇宙 更新时间:2023-11-03 19:14:16 24 4
gpt4 key购买 nike

给定一个大小为 400x400 的方阵,我如何使用 for 循环将其拆分为 20x20 的组成子矩阵?我什至不知道从哪里开始!

我想我想要这样的东西:

[x,y] = size(matrix)

for i = 1:20:x
for j = 1:20:y

但我不确定我将如何进行。想法?

最佳答案

好吧,我知道发帖人明确要求使用 for 循环,而 Jeff Mather 的回答正是提供了这一点。

但我仍然很好奇是否可以在没有循环的情况下将矩阵分解为给定大小的图 block (子矩阵)。如果其他人也很好奇,这就是我想出的:

T = permute(reshape(permute(reshape(A, size(A, 1), n, []), [2 1 3]), n, m, []), [2 1 3])

将二维数组A转换为三维数组T,其中每个二维切片T(:, :, i) 是大小为 m x n 的图 block 之一。第三个索引以标准 Matlab 线性化顺序枚举瓦片,首先是瓦片行。

变体

T = permute(reshape(A, size(A, 1), n, []), [2 1 3]);
T = permute(reshape(T, n, m, [], size(T, 3)), [2 1 3 4]);

使 T 成为一个四维数组,其中 T(:, :, i, j) 给出具有图 block 索引的二维切片 i, j.

想出这些表达式感觉有点像解决滑动拼图。 ;-)

关于matlab - For 循环将矩阵拆分为大小相等的子矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20336288/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com