How to read a triangular matrix
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
Guillaume
el 20 de Abr. de 2018
To avoid ambiguity it would be better if you attached an example text file.
Respuestas (2)
Walter Roberson
el 20 de Abr. de 2018
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 comentarios
Guillaume
el 20 de Abr. de 2018
Editada: Guillaume
el 20 de Abr. de 2018
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 comentarios
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!