How to read a triangular matrix
2 ビュー (過去 30 日間)
古いコメントを表示
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
2018 年 4 月 20 日
To avoid ambiguity it would be better if you attached an example text file.
回答 (2 件)
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()
0 件のコメント
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)
0 件のコメント
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!