如何在Matlab中利用对称性由四分之一矩阵生成完整矩阵?
Matlab实现矩阵镜像生成完整矩阵的方法及优化
给定四分之一矩阵:
A = [1 2; 3 4]
我们需要通过水平、垂直镜像得到完整矩阵:
B = [1 2 2 1; 3 4 4 3; 3 4 4 3; 1 2 2 1]
你的现有方法完全可行
你给出的代码逻辑清晰,能准确生成目标矩阵:
Q = [A fliplr(A)] B = [Q ; flip(Q)]
其中fliplr(A)负责水平翻转A,拼接后得到上半部分Q;flip(Q)默认对矩阵做垂直翻转(和flipud(Q)效果一致),再和Q垂直拼接就得到完整的B。
更简洁的实现方式
如果想要减少中间变量、让代码更紧凑,可以把两步合并成一行:
B = [A fliplr(A); flipud(A) flipud(fliplr(A))]
或者利用flip的维度参数,写法更统一:
B = [A flip(A,2); flip(A,1) flip(flip(A,2),1)]
不过从性能角度来说,这几种方法差异极小——Matlab的矩阵拼接和内置翻转函数都是高度优化的向量化操作,效率都很高。你的原始写法胜在可读性更强,更容易理解每一步的逻辑。
内容的提问来源于stack exchange,提问作者S B
相关产品推荐
相关产品推荐

