如何提取较大矩阵的所有子矩阵

发布于 2024-09-24 15:31:48 字数 362 浏览 1 评论 0原文

我有一个矩阵说:

Q = [05 11 12 16 25;
     17 18 02 07 10;
     04 23 20 03 01;
     24 21 19 14 09;
     06 22 08 13 15]

我想列出所有可能的 3x3 矩阵。一些例子是:

11 12 16;
18  2  7;
23 20  3

等等

 5 11 12;
17 18  2;
 4 23 20;

...基本上所有可能的 3×3 矩阵。 我该怎么做?我必须使用 for 循环吗?

I have a matrix say:

Q = [05 11 12 16 25;
     17 18 02 07 10;
     04 23 20 03 01;
     24 21 19 14 09;
     06 22 08 13 15]

I would like to list out all the possible 3x3 matrices. Some examples are:

11 12 16;
18  2  7;
23 20  3

and

 5 11 12;
17 18  2;
 4 23 20;

etc.. Basically all the possible 3-by-3 matrices.
How do I do it? I must use a for loop?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

如何视而不见 2024-10-01 15:31:48

如果您有图像处理工具箱,则可以使用该功能IM2COL

subMats = im2col(Q,[3 3]);

subMats 的每一列都包含 a 的元素从 Q 中提取的 3×3 矩阵。这些列中的每一列都可以重新整形为 3×3 矩阵,如下所示:

Q1 = reshape(subMats(:,1),[3 3]);  %# Reshape column 1 into a 3-by-3 matrix

If you have the Image Processing Toolbox, you can use the function IM2COL:

subMats = im2col(Q,[3 3]);

Each column of subMats contains the elements of a 3-by-3 matrix extracted from Q. Each of these columns can be reshaped into a 3-by-3 matrix as follows:

Q1 = reshape(subMats(:,1),[3 3]);  %# Reshape column 1 into a 3-by-3 matrix
殤城〤 2024-10-01 15:31:48

我猜这是家庭作业(如果不是,请原谅我),所以这里有一些提示。

  • 画出 5x5 矩阵的结构。
  • 从左上角开始,在 5x5 内绘制一个 3x3 子矩阵。该矩阵涵盖哪些元素?
  • 转到右上角。其中涵盖了哪些要素?
  • 现在转到左下角。那里怎么样?

你知道如何覆盖整个事情吗?

I'm guessing this is homework (if not, please forgive me), so here are some hints.

  • Draw out the structure of your 5x5 matrix.
  • Start in the upper left and draw a 3x3 submatrix within that 5x5. What are the elements covered by that matrix?
  • Go to the upper right. What elements are covered there?
  • Now go to the lower left. What about there?

Do you see how to cover the whole thing?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文