Effacer les filtres
Effacer les filtres

Parse through .txt file to create vector

4 vues (au cours des 30 derniers jours)
Jennifer Good
Jennifer Good le 3 Nov 2023
Commenté : Star Strider le 3 Nov 2023
I have a .txt file of STM information that I need to create vectors for. The data comes out (see below) from a fortan code I have on VS and I can import as a .txt file.
I need a (n,1) vector
Each row in .txt file has 6 numbers to input into vector
0.185167780E+010.530606201E-020.255950360E-010.111319395E+010.795404102E+03-.200248462E+02
-.271809819E+020.598834230E+00-.804603588E+000.313665119E+03-.253884963E+050.628079535E+03
0.692778749E+000.978285945E-020.102006866E+01-.836624219E+010.647731533E+030.705167228E+01
0.291288996E-010.430243554E-030.863493621E-030.664441117E+000.271787718E+02-.671645792E+00
0.102264114E-020.109628329E-050.298501683E-04-.451697007E-020.195425110E+01-.231592002E-01
0.843485726E-030.120234978E-04-.636165956E-05-.100614284E-010.785839881E+000.980295691E+00
For example row 1, I need first 6 elements of vector to be (each number string has exactly 15 characters)
0.185167780E+01
0.530606201E-02
0.255950360E-01
0.111319395E+01
0.795404102E+03
-.200248462E+02
Thanks for any help

Réponse acceptée

Star Strider
Star Strider le 3 Nov 2023
Use the fixedWidthImportOptions function and readmatrix (since there are apparently no header lines or variable names) —
opts = fixedWidthImportOptions('NumVariables',6, 'VariableWidths',[15 15 15 15 15 15], 'DataLines',1);
% T1 = readtable('JG_20231103.txt', opts)
A1 = readmatrix('JG_20231103.txt', opts)
A1 = 6×6 cell array
{'0.185167780E+01'} {'0.530606201E-02'} {'0.255950360E-01'} {'0.111319395E+01'} {'0.795404102E+03'} {'-.200248462E+02'} {'-.271809819E+02'} {'0.598834230E+00'} {'-.804603588E+00'} {'0.313665119E+03'} {'-.253884963E+05'} {'0.628079535E+03'} {'0.692778749E+00'} {'0.978285945E-02'} {'0.102006866E+01'} {'-.836624219E+01'} {'0.647731533E+03'} {'0.705167228E+01'} {'0.291288996E-01'} {'0.430243554E-03'} {'0.863493621E-03'} {'0.664441117E+00'} {'0.271787718E+02'} {'-.671645792E+00'} {'0.102264114E-02'} {'0.109628329E-05'} {'0.298501683E-04'} {'-.451697007E-02'} {'0.195425110E+01'} {'-.231592002E-01'} {'0.843485726E-03'} {'0.120234978E-04'} {'-.636165956E-05'} {'-.100614284E-01'} {'0.785839881E+00'} {'0.980295691E+00'}
format longE
A1 = str2double(A1)
A1 = 6×6
1.0e+00 * 1.851677800000000e+00 5.306062010000000e-03 2.559503600000000e-02 1.113193950000000e+00 7.954041020000000e+02 -2.002484620000000e+01 -2.718098190000000e+01 5.988342300000000e-01 -8.046035880000000e-01 3.136651190000000e+02 -2.538849630000000e+04 6.280795350000000e+02 6.927787490000000e-01 9.782859450000000e-03 1.020068660000000e+00 -8.366242189999999e+00 6.477315330000000e+02 7.051672280000000e+00 2.912889960000000e-02 4.302435540000000e-04 8.634936210000000e-04 6.644411170000000e-01 2.717877180000000e+01 -6.716457920000000e-01 1.022641140000000e-03 1.096283290000000e-06 2.985016830000000e-05 -4.516970070000000e-03 1.954251100000000e+00 -2.315920020000000e-02 8.434857260000000e-04 1.202349780000000e-05 -6.361659560000000e-06 -1.006142840000000e-02 7.858398810000000e-01 9.802956910000000e-01
FirstRow = A1(1,:)
FirstRow = 1×6
1.851677800000000e+00 5.306062010000000e-03 2.559503600000000e-02 1.113193950000000e+00 7.954041020000000e+02 -2.002484620000000e+01
FirstRowTransposed = FirstRow.'
FirstRowTransposed = 6×1
1.851677800000000e+00 5.306062010000000e-03 2.559503600000000e-02 1.113193950000000e+00 7.954041020000000e+02 -2.002484620000000e+01
I created the file by pasting the original matrix into Notepad and saving it as a .txt file.
.
  2 commentaires
Jennifer Good
Jennifer Good le 3 Nov 2023
Yes this works, thank you!
Star Strider
Star Strider le 3 Nov 2023
As always, my pleasure!

Connectez-vous pour commenter.

Plus de réponses (0)

Produits


Version

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by