在MATLAB中对齐矩阵的更有效方法?

时间:2016-07-17 06:37:40

标签: matlab

我有一个几乎对称的"矩阵,我希望在MATLAB中对称化。例如,我希望对称化

>> A = [0 0 1; 2 0 3; 0 3 0]

A =

     0     0     1
     2     0     3
     0     3     0

进入

>> B

B =

     0     2     1
     2     0     3
     1     3     0

安全假设是A的对角线条目都为零,而且#34;要改变的位数"总是0。例如,我在上面的示例中更改了A(1, 2)A(3, 1),两个位置的原始值都是0

基于@Photon's comment(感谢Photon!)的最佳尝试是

>> C = -0.5*(A.'.*A~=0)+1;
>> B = (A+A.').*C

B =

     0     2     1
     2     0     3
     1     3     0

是否有更好(更高效或更快)的方法来实现这一目标?

1 个答案:

答案 0 :(得分:6)

怎么样?
B = max( A, A.' );

假设A的所有条目都是非负数。