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

13 vues (au cours des 30 derniers jours)
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.

Réponse acceptée

Walter Roberson
Walter Roberson le 4 Mar 2017
Easiest way, R2013b or later:
datatable = readtable('VNA_S_Matrix_25mm.csv', 'Delimiter',',');
data = [datatable{:,1}, str2double(datatable{:,2:end})];
  2 commentaires
supun
supun le 6 Mar 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 le 14 Sep 2021
Works excatly like I wanted! Thanks for this.

Connectez-vous pour commenter.

Plus de réponses (1)

per isakson
per isakson le 4 Mar 2017
Modifié(e) : per isakson le 4 Mar 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
>>

Catégories

En savoir plus sur Data Import and Export dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by