Project 1 - Parsing NASA thermodynamic data
Aim: To write a code in Matlab to parse the NASA thermodynamic data file and then calculate the thermodynamic properties of various gas species.
Objective:
- To write a function that extracts the 14 coefficients and calculates the enthalpy, entropy, and specific heats for all the species in the NASA thermodynamic data file "THERMO.dat".

- The NASA polynomials have the form as shown above.
- To calculate the molecular weight of each species and display it in the command window.
- To plot the Cp, Enthalpy, and Entropy for the local temperature range (low temperature: high temperature) specific for each species.
- To save the plots as images with appropriate names and dump them in separate folders for each species with suitable name automatically.
FACTORS ENTAILED:
File Parsing:
- Parsing means to make something understandable. In programming, this means transforming data that is represented in one form into a more usable one.
- To accomplish this, one must first partially analyse the data, comprehend its underlying structure (by making some assumptions based on what one expects to see), and then explicitly represent that structure in the code.
- A file is parsed by reading in some kind of data stream and creating an in-memory model of its semantic content. This aims to make it easier to transform the data in some way.
EQUATIONS:
NASA Thermodynamic File:
- THERMO.dat file is a data file containing 14 coefficients for 53 different elements given by NASA. These coefficients are utilized to calculate the specific heat, enthalpy & entropy for a particular element.
The equations that we are going to use in the Functions to calculate cp, H,S are:
`Cp=a_1+a_2T+a_3T^2+a_4T^3+a_5T^4`
`H/(RT)=a_1+a_2T/2+a_3T^2/3+a_4T^3/4+a_5T^4/5+a_6/T`
`S/R=a_1lnT+a_2T+a_3T^2/2+a_4T^3/3+a_5T^4/4+a_7`
Where,
R = Universal Gas constant
T = Temperature
Cp = Specific heat (KJ)
S = Entropy(KJ/mol-K)
H = Enthalpy(KJ/mol)
a(i) = Coefficients
- Where R is the universal gas constant, T is the temperature and a1, a2, a3, a4, a5, a6, and a7 are the numerical coefficients supplied in the thermodynamic file. The FIRST 7 coefficients are HIGH-temperature coefficients (above 1000 K) and the SECOND 7 coefficients are LOW-temperature coefficients (below 1000 K).
Specific Heat, Enthalpy and Entropy:
- Specific Heat, Enthalpy and Entropy of various species values at different temperatures are required extensively to analyze the thermodynamic process.
- For i.e, These quantities are necessary to monitor how the combustion is progressing and how effective it will be if the combustion process is taken into account during this. It eventually enables seeking out the potential for process improvement. Similar quantities are used extensively to observe the phenomenon in other processes like refrigeration, air conditioning, chemical kinetics, nozzle flow, detonation process, etc.
Coding Functions:
1. Specific Heat:
- The specific heat is the amount of heat per unit mass required to raise the temperature by one degree Celsius. The relationship between heat and temperature change is usually expressed in the form shown below where c is the specific heat.
- Cp = (a1 + a2 T + a3 T^2 + a4 T^3 + a5 T^4)*R
Function for Specific heat:
% Specific heat calculation
function Cp = Specificheat(a1,a2,a3,a4,a5,a8,a9,a10,a11,a12,Temp,R,global_medium_temp)
% Comparing with global temperature
% If less than global temperature - minimum coefficients are taken
if Temp <= global_medium_temp
Cp = R*(a8 + (a9*Temp) + (a10*(Temp).^2) + (a11*(Temp).^3) + (a12*(Temp).^4));
else
Cp = R*(a1 + (a2*Temp) + (a3*(Temp).^2) + (a4*(Temp).^3) + (a5*(Temp).^4));
% Else maximum coefficients are taken
end
2. Entropy:
- Entropy, the measure of a system's thermal energy per unit temperature that is unavailable for doing useful work. Because work is obtained from ordered molecular motion, the amount of entropy is also a measure of the molecular disorder, or randomness, of a system.
- S = (a1 lnT + a2 T + a3 T^2 /2 + a4 T^3 /3 + a5 T^4 /4 + a7)*R
Function for Entropy:
% Entropy Calculation
function S = Entropy_calc(a1,a2,a3,a4,a5,a7,a8,a9,a10,a11,a12,a14,Temp,R,global_medium_temp)
% Comparing with global temperature
% If less than global temperature - minimum coefficients are taken
if Temp <= global_medium_temp
S = R.*(a8.*log(Temp) + (a9.*Temp) + (a10*((Temp).^2)/2) + (a11*((Temp).^3)/3) + (a12*((Temp).^4)/4) + a14);
else
% Else - maximum coefficients are taken
S = R.*(a1.*log(Temp) + (a2.*Temp) + (a3*((Temp).^2)/2) + (a4*((Temp).^3)/3) + (a5*((Temp).^4)/4) + a7);
end
3. Enthalpy:
- Enthalpy , a property of a thermodynamic system, is equal to the system's internal energy plus the product of its pressure and volume. In a system contained so as to prevent mass transfer, for processes at constant pressure, the heat absorbed or released equals the change in enthalpy.
- H = (a1 + a2 T /2 + a3 T^2 /3 + a4 T^3 /4 + a5 T^4 /5 + a6/T)*R*T
Function for Enthalpy:
% Enthalpy Calculation
function H = Enthalpy(a1,a2,a3,a4,a5,a6,a8,a9,a10,a11,a12,a13,Temp,R,global_medium_temp)
% Comparing with global temperature
% If less than global temperature - minimum coefficients are taken
if Temp <= global_medium_temp
H = R*Temp.*(a8 + ((a9*Temp)/2) + ((a10*(Temp).^2)/3) + ((a11*(Temp).^3)/4) + ((a12*(Temp).^4)/5) +((a13./Temp)));
else
% Else maximum coefficients are taken
H = R*Temp.*(a1 + ((a2*Temp)/2) + ((a3*(Temp).^2)/3) + ((a4*(Temp).^3)/4) + ((a5*(Temp).^4)/5) +((a6./Temp)));
end
4. Molecular Weight:
- The mass of a specific molecule is its molecular mass, which is expressed in daltons. Because they contain various isotopes of an element, different molecules of the same compound can have distinct molecular masses.
Function for Molecular Weight:
% Molecular Weight Calculation
function Molecularweight = Molecular_weight(Species_SP)
% Standard - Atomic Name
atomic_name = ['H','C','O','N','A'];
% Hydrogen, Carbon, Oxygen, Nitrogen, Argon
fprintf('Molecular Weight of ');
fprintf(Species_SP);
fprintf(' : ');
% Standard Atomic Number
Atomic_Weight = [1.008 12.011 15.999 14.007 39.948];
% Starting Range of Molecule
Molecularweight = 0;
% Adding Atomic number to obtain particular value
for i = 1:length(Species_SP)
for j = 1:length(atomic_name)
if strcmpi(Species_SP(i),atomic_name(j))
Molecularweight = Molecularweight +Atomic_Weight(j);
position = j;
end
end
n = str2num(Species_SP(i));
if n>1
Molecularweight = Molecularweight + Atomic_Weight(position)*(n-1);
end
end
fprintf('molecular weight %s :',Species_SP);
fprintf('%d',Molecularweight);
disp(' ');
end
MATLAB MAIN CODE:
clear all
close all
clc
% Make directory
mkdir 'Macintosh HD:/Users/herby/Desktop/NASA File Parsing'
% Reading Data file - NASA Thermodynamic
% Open a file & 'r' Open the file for reading
f1=fopen('THERMO.dat','r')
gt=fgetl(f1);
% Obtaing Temperatures - by Reading Header Information
global_temp=fgetl(f1);
% Spliting
t=strsplit(global_temp);
% Converting string cells to numbers using str2num,
global_low_temp=str2num(t{2});
global_medium_temp=str2num(t{3});
global_high_temp=str2num(t{4});
% Temperature range & Gas Constant
% Temperature Range assumed
Temp=linspace(global_low_temp,global_high_temp,1000);
% Universal Gas Constant J/(mol-K)
R = 8.314;
% skipping three comment lines in the file
for i = 1:3
gt=fgetl(f1);
end
for i = 1:53
gt=fgetl(f1);
A=strsplit(gt,' ');
Species_SP=(A{1})
line_1=fgetl(f1) ;
a=strfind(line_1,'E');
% Extracting higher and lower temperature coefficients
% % Extracting FIRST 7 coefficients i.e HIGH-temperature coefficients
a1=line_1(1:a(1)+3);
a1=str2num(a1); %1
a2=line_1(a(1)+4:a(2)+3);
a2=str2num(a2) ; %2
a3=line_1(a(2)+4:a(3)+3);
a3=str2num(a3) ; %3
a4=line_1(a(3)+4:a(4)+3);
a4=str2num(a4); %4
a5=line_1(a(4)+4:a(5)+3);
a5=str2num(a5) ; %5
line_2=fgetl(f1);
b=strfind(line_1,'E');;
a6=line_2(1:b(1)+3);
a6=str2num(a6) ; %6
a7=line_2(a(1)+4:b(2)+3);
a7=str2num(a7); %7
% Extracting SECOND 7 coefficients - LOW-temperature coefficients
a8=line_2(b(2)+4:b(3)+3);
a8=str2num(a8); %8
a9=line_2(b(3)+4:b(4)+3);
a9=str2num(a9) ; %9
a10=line_2(b(4)+4:b(5)+3);
a10=str2num(a10) ; %10
line_3=fgetl(f1);
c=strfind(line_1,'E');
a11=line_3(1:c(1)+3);
a11=str2num(a11); %11
a12=line_3(c(1)+4:c(2)+3);
a12=str2num(a12); %12
a13=line_3(c(2)+4:c(3)+3);
a13=str2num(a13); %13
a14=line_3(c(3)+4:c(4)+3);
a14=str2num(a14); %14
% Specific heat calculation
Cp = Specificheat(a1,a2,a3,a4,a5,a8,a9,a10,a11,a12,Temp,R,global_medium_temp);
% Enthalpy calculation
H = Enthalpy(a1,a2,a3,a4,a5,a6,a8,a9,a10,a11,a12,a13,Temp,R,global_medium_temp);
% Entropy calculation
S = Entropy_calc(a1,a2,a3,a4,a5,a7,a8,a9,a10,a11,a12,a14,Temp,R,global_medium_temp);
% Calculating molecular weight of species
Molecularweight(i) = Molecular_weight(Species_SP);
% Read & Write Molecular list
Molecular_list = fopen('Molecular weight.txt','a+');
fprintf( Molecular_list,'Molecular weight of %s is %d \n',Species_SP,Molecularweight);
fclose(Molecular_list);
% plotting(CP,H,S,Temp,Species_SP)
% Saving as a folder
cur_dir=pwd;
mkdir(Species_SP);
cd(Species_SP);
% Plot 1, Specific heat (CP) vs Temperature Range (Temp)
figure(1)
plot(Temp,Cp,'linewidth',2,'color','r');
xlabel('Temperature [K]');
ylabel('Specific Heat [kJ]');
title(sprintf('Varying Specific Heat with Temperature Range of %s',Species_SP));
grid on
saveas(figure(1),'Specific Heat.jpg');
% Plot 2, Enthalpy (H) vs Temperature Range (Temp)
figure(2)
plot(Temp,H,'linewidth',2,'color','g');
xlabel('Temperature [K]');
ylabel('Enthalpy in [kJ/(mol)]');
title(sprintf('Varying Enthalpy with Temperature Range of %s',Species_SP));
grid on
saveas(figure(2),'Ethalpy.jpg');
% Plot 3, Entropy (S) vs Temperature Range (Temp)
figure(3)
plot(Temp,S,'linewidth',2,'color','b');
xlabel('Temperature [K]');
ylabel('Entropy in [kJ/(mol-K)]');
title(sprintf('Varying Entropy with Temperature Range of %s',Species_SP));
grid on
saveas(figure(3),'Entropy.jpg');
cd(cur_dir);
% Molecular weight
M = Molecular_weight(Species_SP)
f2 = fopen('molecular mass','w');
fprintf('%s n %s n %f n','species','Molecular mass',M)
fclose(f2)
end
Code Explanation:
- 'clear all' - clear all the variables in the workspace,
- 'close all' - closes all the plots and figures and
- 'clc' - clears the command window.
- Making a directory using 'mkdir' with location address.
- After that, reading the text file 'THERMO.dat' file and opening it by using ‘fopen’ and 'r' as reading command.
- For reading the line in a text file using ‘fgetl’.
- To obtain the temperature range from the Thermo.dat file, using ‘strsplit’ to split the temperature into a particular string cell.
- Used ‘for’ loop to read 53 species.
- Used ‘strfind’ to find string.
- Using 'linspace' specified the temperature range from low to high.
- Used ‘str2num’ for converting string cell to numbers.
- Reading all the 53 species to plot specific heat(cp), enthalpy(H), and entropy(S), with temperature values, and to find the molecular weights.
- Adding universal gas constant value ‘R’.Extracted higher and lower temperature coefficient by reading line by line from the species.
- Divided the temperature into a string and then converted to a number so that temperature values can be used separately to solve the NASA thermodynamics.
- Using ‘for & end’ loops to skip the next three comment lines in the text file.
- Calling specific heat, enthalpy, entropy function codes.
- Calculating Molecular weight.
Syntax Used during Coding:
- Fopen : pen a file or obtain information about open files
- ‘r’ : Open the file for reading
- strsplit - Split string or character vector at specified delimiter
- fgetl - Read line from file
- strfind - Find one string within another
- str2num - Convert character array or string to numeric array
- linspace - Generate linearly spaced vectors
- mkdir - Make new directory
- cd - Change working directory
Errors & Command window:
- No Errors were found during execution.

Output:
Molecular Weight of O : molecular weight O :1.599900e+01
species n Molecular mass n 15.999000 nMolecular Weight of O2 : molecular weight O2 :3.199800e+01
Molecular Weight of O2 : molecular weight O2 :3.199800e+01
species n Molecular mass n 31.998000 nMolecular Weight of H : molecular weight H :1.008000e+00
Molecular Weight of H : molecular weight H :1.008000e+00
species n Molecular mass n 1.008000 nMolecular Weight of H2 : molecular weight H2 :2.016000e+00
Molecular Weight of H2 : molecular weight H2 :2.016000e+00
species n Molecular mass n 2.016000 nMolecular Weight of OH : molecular weight OH :1.700700e+01
Molecular Weight of OH : molecular weight OH :1.700700e+01
species n Molecular mass n 17.007000 nMolecular Weight of H2O : molecular weight H2O :1.801500e+01
Molecular Weight of H2O : molecular weight H2O :1.801500e+01
species n Molecular mass n 18.015000 nMolecular Weight of HO2 : molecular weight HO2 :3.300600e+01
Molecular Weight of HO2 : molecular weight HO2 :3.300600e+01
species n Molecular mass n 33.006000 nMolecular Weight of H2O2 : molecular weight H2O2 :3.401400e+01
Molecular Weight of H2O2 : molecular weight H2O2 :3.401400e+01
species n Molecular mass n 34.014000 nMolecular Weight of C : molecular weight C :1.201100e+01
Molecular Weight of C : molecular weight C :1.201100e+01
species n Molecular mass n 12.011000 nMolecular Weight of CH : molecular weight CH :1.301900e+01
Molecular Weight of CH : molecular weight CH :1.301900e+01
species n Molecular mass n 13.019000 nMolecular Weight of CH2 : molecular weight CH2 :1.402700e+01
Molecular Weight of CH2 : molecular weight CH2 :1.402700e+01
species n Molecular mass n 14.027000 nMolecular Weight of CH2(S) : molecular weight CH2(S) :1.402700e+01
Molecular Weight of CH2(S) : molecular weight CH2(S) :1.402700e+01
species n Molecular mass n 14.027000 nMolecular Weight of CH3 : molecular weight CH3 :1.503500e+01
Molecular Weight of CH3 : molecular weight CH3 :1.503500e+01
species n Molecular mass n 15.035000 nMolecular Weight of CH4 : molecular weight CH4 :1.604300e+01
Molecular Weight of CH4 : molecular weight CH4 :1.604300e+01
species n Molecular mass n 16.043000 nMolecular Weight of CO : molecular weight CO :2.801000e+01
Molecular Weight of CO : molecular weight CO :2.801000e+01
species n Molecular mass n 28.010000 nMolecular Weight of CO2 : molecular weight CO2 :4.400900e+01
Molecular Weight of CO2 : molecular weight CO2 :4.400900e+01
species n Molecular mass n 44.009000 nMolecular Weight of HCO : molecular weight HCO :2.901800e+01
Molecular Weight of HCO : molecular weight HCO :2.901800e+01
species n Molecular mass n 29.018000 nMolecular Weight of CH2O : molecular weight CH2O :3.002600e+01
Molecular Weight of CH2O : molecular weight CH2O :3.002600e+01
species n Molecular mass n 30.026000 nMolecular Weight of CH2OH : molecular weight CH2OH :3.103400e+01
Molecular Weight of CH2OH : molecular weight CH2OH :3.103400e+01
species n Molecular mass n 31.034000 nMolecular Weight of CH3O : molecular weight CH3O :3.103400e+01
Molecular Weight of CH3O : molecular weight CH3O :3.103400e+01
species n Molecular mass n 31.034000 nMolecular Weight of CH3OH : molecular weight CH3OH :3.204200e+01
Molecular Weight of CH3OH : molecular weight CH3OH :3.204200e+01
species n Molecular mass n 32.042000 nMolecular Weight of C2H : molecular weight C2H :2.503000e+01
Molecular Weight of C2H : molecular weight C2H :2.503000e+01
species n Molecular mass n 25.030000 nMolecular Weight of C2H2 : molecular weight C2H2 :2.603800e+01
Molecular Weight of C2H2 : molecular weight C2H2 :2.603800e+01
species n Molecular mass n 26.038000 nMolecular Weight of C2H3 : molecular weight C2H3 :2.704600e+01
Molecular Weight of C2H3 : molecular weight C2H3 :2.704600e+01
species n Molecular mass n 27.046000 nMolecular Weight of C2H4 : molecular weight C2H4 :2.805400e+01
Molecular Weight of C2H4 : molecular weight C2H4 :2.805400e+01
species n Molecular mass n 28.054000 nMolecular Weight of C2H5 : molecular weight C2H5 :2.906200e+01
Molecular Weight of C2H5 : molecular weight C2H5 :2.906200e+01
species n Molecular mass n 29.062000 nMolecular Weight of C2H6 : molecular weight C2H6 :3.007000e+01
Molecular Weight of C2H6 : molecular weight C2H6 :3.007000e+01
species n Molecular mass n 30.070000 nMolecular Weight of CH2CO : molecular weight CH2CO :4.203700e+01
Molecular Weight of CH2CO : molecular weight CH2CO :4.203700e+01
species n Molecular mass n 42.037000 nMolecular Weight of HCCO : molecular weight HCCO :4.102900e+01
Molecular Weight of HCCO : molecular weight HCCO :4.102900e+01
species n Molecular mass n 41.029000 nMolecular Weight of HCCOH : molecular weight HCCOH :4.203700e+01
Molecular Weight of HCCOH : molecular weight HCCOH :4.203700e+01
species n Molecular mass n 42.037000 nMolecular Weight of H2CN : molecular weight H2CN :2.803400e+01
Molecular Weight of H2CN : molecular weight H2CN :2.803400e+01
species n Molecular mass n 28.034000 nMolecular Weight of HCN : molecular weight HCN :2.702600e+01
Molecular Weight of HCN : molecular weight HCN :2.702600e+01
species n Molecular mass n 27.026000 nMolecular Weight of HNO : molecular weight HNO :3.101400e+01
Molecular Weight of HNO : molecular weight HNO :3.101400e+01
species n Molecular mass n 31.014000 nMolecular Weight of N : molecular weight N :1.400700e+01
Molecular Weight of N : molecular weight N :1.400700e+01
species n Molecular mass n 14.007000 nMolecular Weight of NNH : molecular weight NNH :2.902200e+01
Molecular Weight of NNH : molecular weight NNH :2.902200e+01
species n Molecular mass n 29.022000 nMolecular Weight of N2O : molecular weight N2O :4.401300e+01
Molecular Weight of N2O : molecular weight N2O :4.401300e+01
species n Molecular mass n 44.013000 nMolecular Weight of NH : molecular weight NH :1.501500e+01
Molecular Weight of NH : molecular weight NH :1.501500e+01
species n Molecular mass n 15.015000 nMolecular Weight of NH2 : molecular weight NH2 :1.602300e+01
Molecular Weight of NH2 : molecular weight NH2 :1.602300e+01
species n Molecular mass n 16.023000 nMolecular Weight of NH3 : molecular weight NH3 :1.703100e+01
Molecular Weight of NH3 : molecular weight NH3 :1.703100e+01
species n Molecular mass n 17.031000 nMolecular Weight of NO : molecular weight NO :3.000600e+01
Molecular Weight of NO : molecular weight NO :3.000600e+01
species n Molecular mass n 30.006000 nMolecular Weight of NO2 : molecular weight NO2 :4.600500e+01
Molecular Weight of NO2 : molecular weight NO2 :4.600500e+01
species n Molecular mass n 46.005000 nMolecular Weight of HCNO : molecular weight HCNO :4.302500e+01
Molecular Weight of HCNO : molecular weight HCNO :4.302500e+01
species n Molecular mass n 43.025000 nMolecular Weight of HOCN : molecular weight HOCN :4.302500e+01
Molecular Weight of HOCN : molecular weight HOCN :4.302500e+01
species n Molecular mass n 43.025000 nMolecular Weight of HNCO : molecular weight HNCO :4.302500e+01
Molecular Weight of HNCO : molecular weight HNCO :4.302500e+01
species n Molecular mass n 43.025000 nMolecular Weight of NCO : molecular weight NCO :4.201700e+01
Molecular Weight of NCO : molecular weight NCO :4.201700e+01
species n Molecular mass n 42.017000 nMolecular Weight of CN : molecular weight CN :2.601800e+01
Molecular Weight of CN : molecular weight CN :2.601800e+01
species n Molecular mass n 26.018000 nMolecular Weight of HCNN : molecular weight HCNN :4.103300e+01
Molecular Weight of HCNN : molecular weight HCNN :4.103300e+01
species n Molecular mass n 41.033000 nMolecular Weight of N2 : molecular weight N2 :2.801400e+01
Molecular Weight of N2 : molecular weight N2 :2.801400e+01
species n Molecular mass n 28.014000 nMolecular Weight of AR : molecular weight AR :3.994800e+01
Molecular Weight of AR : molecular weight AR :3.994800e+01
species n Molecular mass n 39.948000 nMolecular Weight of C3H8 : molecular weight C3H8 :4.409700e+01
Molecular Weight of C3H8 : molecular weight C3H8 :4.409700e+01
species n Molecular mass n 44.097000 nMolecular Weight of C3H7 : molecular weight C3H7 :4.308900e+01
Molecular Weight of C3H7 : molecular weight C3H7 :4.308900e+01
species n Molecular mass n 43.089000 nMolecular Weight of CH3CHO : molecular weight CH3CHO :4.405300e+01
Molecular Weight of CH3CHO : molecular weight CH3CHO :4.405300e+01
species n Molecular mass n 44.053000 nMolecular Weight of CH2CHO : molecular weight CH2CHO :4.304500e+01
Molecular Weight of CH2CHO : molecular weight CH2CHO :4.304500e+01
species n Molecular mass n 43.045000 n>>
Screenshot of the window where all the folders are saved. :

Results:
Specific Heat, Entropy and Enthalpy Plots for O2, N2 and Co2 species :
1. Plots for O2:
- Variation of Specific heat with the temperature of O2:

- Variation of Entropy with the temperature of O2:

- Variation of Enthalpy with the temperature of O2:

2. Plots for N2 :
- Variation of Specific heat with the temperature of N2 :

- Variation of Entropy with temperature of N2:

- Variation of Enthalpy with the temperature of N2:

3.Plots for Co2 :
- Variation of Specific heat with the temperature of Co2:

- Variation of Entropy with the temperature of CO2:

- Variation of Enthalpy with the temperature of CO2:

- Molecular Weight of all species :
- Attached a file name Molecular weight.txt in the Attachments.
Conclusion :
- The coefficients required to evaluate various thermodynamic parameters for various species are extracted from the NASA thermodynamic data file using MATLAB code. For each species, the specific heat, enthalpy, and entropy are calculated and plotted against the temperature range in the area. For each species, the molecular weight is calculated.
Google Drive Link for Folders:
References :
- https://in.mathworks.com/help/textanalytics/ref/extractfiletext.html
- https://in.mathworks.com/matlabcentral/answers/497882-parsing-text-files-for-beginners
- https://in.mathworks.com/matlabcentral/answers/196582-best-way-to-parse-text-file
- https://in.mathworks.com/matlabcentral/answers/449624-how-to-parse-extract-data-from-a-text-file
- https://stackoverflow.com/questions/63963569/how-to-import-parse-sparse-data-from-a-text-file-into-a-matlab-array
- https://www.codeproject.com/Articles/1207989/Writing-MATLAB-to-C-converter-Parser-and-Code-Gene