how to read complex file data to matrix
13 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
vincent lin
el 17 de En. de 2020
Editada: per isakson
el 18 de En. de 2020
I have a.txt file, with complex data. the format is
1.958138021e-02 0.64646110658609712285 + 0.093290941560866688653j
1.958139648e-02 0.32117256288141476928 - 0.061542254916540022058j
1.958141276e-02 -0.22359569118086644601 + 0.3585713533321416846j
1.958142904e-02 -0.22397218216792619261 + 0.082213621398327246803j
1.999960938e-02 0
1.999962565e-02 0
1.999964193e-02 0
1.999965820e-02 0
2.000000000e-02 0.10412797744247889731 + 0.0081123700776114041067j
There's space between + and -. how can I read this file into a matrix with seperated I part and Q part.
like
1.958138021e-02 0.64646110658609712285 0.093290941560866688653
...
1.999960938e-02 0 0
2.000000000e-02 0.10412797744247889731 0.0081123700776114041067
2 comentarios
Respuesta aceptada
per isakson
el 17 de En. de 2020
Following Walter's advise
%%
chr = fileread('a.txt');
%%
chr = strrep( chr, ' + ', '+' );
chr = strrep( chr, ' - ', '-' );
cac = textscan( chr, '%f%f' );
%%
M = cat( 2, cac{1}, real(cac{2}), imag(cac{2}) );
>> M(1:3,:)
ans =
0 0.10413 0.0081124
1.6276e-08 -0.04608 -0.073765
3.2552e-08 -0.038321 0.076231
1 comentario
Más respuestas (1)
Walter Roberson
el 17 de En. de 2020
Sometimes easiest is to read the file as a character vector, use regexp to remove the space around the sign of the imaginary part, and then textscan. textscan and other numeric formats can read complex values when there is no space.
Or read the file as string and regexp to change lines that do not end in j to append + 0j on them. With all lines having the same format you can easily textscan to extract real and imaginary separately.
0 comentarios
Ver también
Categorías
Más información sobre Text Files en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!