矩阵图案

发布于 2024-12-17 09:09:30 字数 374 浏览 0 评论 0原文

我有两个 9x9 矩阵,A 和 B。

我想创建一个具有以下模式的大矩阵 C

 A B B B B B
 B A B B B B
 B B A B B B
 B B B A B B
 B B B B A B
 B B B B B A

如您所见,A 矩阵位于对角线上,B 位于其他位置。我正在尝试创建一个代码,以便无论尺寸有多大,这种模式都会继续。

例如,10 矩阵 x 10 矩阵仍然具有沿对角线的矩阵 A 和其他各处的矩阵 B。

最好使用 horzcat 和 vertcat 或其他类似 blkdiag 的东西?我不想将这些矩阵转换为单元格,因为矩阵 A 和 B 已经包含信息。

感谢大家抽出时间阅读。

I have two 9x9 matrices, A and B.

I would like to create a large matrix C with the following pattern

 A B B B B B
 B A B B B B
 B B A B B B
 B B B A B B
 B B B B A B
 B B B B B A

As you can see, the A matrices are on the diagonal, the B are everywhere else. I'm trying to create a code so that this pattern continues no matter how great the dimensions are.

E.g. 10 matrices x 10 matrices still has matrix A along the diagonal and B's everywhere else.

Best to use horzcat and vertcat or something else like blkdiag? I'd rather not convert these matrices to cells as matrix A and B already contain information.

Thank you everyone for taking the time to read.

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

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

发布评论

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

评论(3

隔纱相望 2024-12-24 09:09:30

怎么样(精炼)

maskcell = repmat( {ones(size(A))}, 1, 10 );
maskdiag = blkdiag( maskcell{:} );
AA = repmat( {A}, 1, 10 );
AD = blkdiag( AA{:} );
BB = repmat( B, 10, 10 );
C = BB .* (maskdiag == 0) + AD

根据下面完全有效的评论,我添加了“掩码”以确保从 C 中选择正确的部分。

How about (refined)

maskcell = repmat( {ones(size(A))}, 1, 10 );
maskdiag = blkdiag( maskcell{:} );
AA = repmat( {A}, 1, 10 );
AD = blkdiag( AA{:} );
BB = repmat( B, 10, 10 );
C = BB .* (maskdiag == 0) + AD

Following on from the entirely valid comments below, I added the 'mask' to ensure that the correct pieces are selected from C.

蓝戈者 2024-12-24 09:09:30

C=B(~eye(size(B)))+A(eye(size(A))) 应该能让你得到你想要的。不过,这可能是一种更快的结合眼睛使用的方法......

C=B(~eye(size(B)))+A(eye(size(A))) should get you what you want. Could be a faster way to combine the use of eye though...

木槿暧夏七纪年 2024-12-24 09:09:30

克朗(眼睛(10),A)+克朗(〜眼睛(10),B)

kron(eye(10), A) + kron(~eye(10), B)

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