Как загрузить этот вид матрицы в MATLAB - PullRequest
1 голос
/ 08 марта 2011

У меня есть матрица 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 Ответ

5 голосов
/ 08 марта 2011

Попробуйте вместо этого использовать importdata , load обычно используется только для .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

, а затем замените NaN на 0 и используйте ваше выражение для создания симметричной матрицы.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...