How to read a triangular matrix

1 次查看(过去 30 天)
Peter Kerekes
Peter Kerekes 2018-4-20
编辑: Guillaume 2018-4-20
Hello ! I would like to read an upper triangular(symmetrical) matrix from a txt the format is the forwarding:
A=[1 1 1;
' ' 1 1;
' ' ' ' 1;];
The upper triangle element are missing(' ' is a space character instead) in the txt.
  2 个评论
Guillaume
Guillaume 2018-4-20
To avoid ambiguity it would be better if you attached an example text file.
Peter Kerekes
Peter Kerekes 2018-4-20
I only have a very big txt, but I can atteche it. It is an 1000x1000 matrix

请先登录,再进行评论。

回答(2 个)

Walter Roberson
Walter Roberson 2018-4-20
Read the values as a single vector. Delete the entries corresponding to the 0 diagonal (I did not look through the entire file to be sure the diagonal is all 0 though.) Noe you should be able to use squareform() to create the full array.
squareform() is mostly used with pdist()

Guillaume
Guillaume 2018-4-20
编辑:Guillaume 2018-4-20
fid = fopen('Stext2.txt');
entries = textscan(fid, '%f');   %read every number as one vector
fclose(fid);
msize = (sqrt(8*numel(entries{1})+1)-1)/2;  %size of full matrix
fullmat = zeros(msize);         
fullmat(tril(true(size(fullmat)))) = entries{1};  %fill up lower triangle (since matlab fills columns not rows)
fullmat = fullmat + triu(fullmat.', 1);  %add upper triangle (without main diagonal)

类别

Help CenterFile Exchange 中查找有关 Large Files and Big Data 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by