矩阵图案
我有两个 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
怎么样(精炼)
根据下面完全有效的评论,我添加了“掩码”以确保从 C 中选择正确的部分。
How about (refined)
Following on from the entirely valid comments below, I added the 'mask' to ensure that the correct pieces are selected from C.
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...
克朗(眼睛(10),A)+克朗(〜眼睛(10),B)
kron(eye(10), A) + kron(~eye(10), B)