How to import columns of complex numbers to Matlab variables from CSV file?

13 visualizaciones (últimos 30 días)
I want to import the complex numbers in the attached file to matlab preferably as follows,
S11=the data in column B from 2nd row to 5th row and so on.
Thank you.

Respuesta aceptada

Walter Roberson
Walter Roberson el 4 de Mzo. de 2017
Easiest way, R2013b or later:
datatable = readtable('VNA_S_Matrix_25mm.csv', 'Delimiter',',');
data = [datatable{:,1}, str2double(datatable{:,2:end})];
  2 comentarios
supun
supun el 6 de Mzo. de 2017
works great. I edited according to my need.
datatable = readtable('VNA_S_Matrix_25mm.csv', 'Delimiter',',');
S11 = transpose(str2double(datatable{:,2}));
S22 = transpose(str2double(datatable{:,7}));
Rahul Agnihotri
Rahul Agnihotri el 14 de Sept. de 2021
Works excatly like I wanted! Thanks for this.

Iniciar sesión para comentar.

Más respuestas (1)

per isakson
per isakson el 4 de Mzo. de 2017
Editada: per isakson el 4 de Mzo. de 2017
textscan (and readtable) reads complex numbers. Valid form for a complex number is: &nbsp ±<real>±<imag>i|j. Example: 5.7-3.1i.
The problem with your file is the spaces surrounding the sign of the imaginary part.
If the entire file fits in memory, this is a way to read it.
str = fileread( 'VNA_S_Matrix_25mm.csv' );
str = strrep( str, ' ', '' ); % remove spaces
cac = textscan( str, '%*f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f' ...
, 'Headerlines',1, 'Delimiter',',', 'CollectOutput',true );
and look at the result
>> cac
cac =
[4x16 double]
>> cac{1}(1:2)
ans =
0.1978 + 0.0323i -0.0270 - 0.1628i
>> cac{1}(4,15:16)
ans =
0.2387 - 0.0561i -0.3137 - 0.0229i
>>

Categorías

Más información sobre Data Import and Export 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!

Translated by