如何在MATLAB中加载这种矩阵

时间:2011-03-08 08:37:02

标签: matlab file-io matrix

我有一个upper triangular矩阵,如:

A=  load('A.txt');

1.0    3.32   -7.23
       1.00    0.60
               1.00

我想在MATLAB中加载它,因为这是对称的转换它

a = A + triu(A, 1)'
 所以最后我会有一个矩阵a

1.0    3.32   -7.23
3.32   1.00    0.60
-7.23  0.60    1.00

我遇到的问题是在加载时:

>> A = load('A.txt');
??? Error using ==> load
Number of columns on line 1 of ASCII file C:\A.txt
must be the same as previous lines.

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:5)

尝试使用importdataload通常仅用于 .mat 文件。您的文件 A.txt 是如何构建的?如果是这样的话,

1.0    3.32   -7.23
1.00    0.60
1.00

然后你会得到

A = importdata('A.txt')

A =

    1.0000    3.3200   -7.2300
    1.0000    0.6000       NaN
    1.0000       NaN       NaN

所以你必须移动最后两行,比如

A(2,:) = circshift(A(2,:),[0 1])
A(3,:) = circshift(A(3,:),[0 2])

A =

    1.0000    3.3200   -7.2300
    NaN       1.0000    0.6000
    NaN       NaN       1.0000

然后用0替换NaN并使用表达式创建对称矩阵。

A(isnan(A)) = 0;

a = A + triu(A, 1)';

A =

    1.0000    3.3200   -7.2300
    3.3200    1.0000    0.6000
   -7.2300    0.6000    1.0000