How to import variable names and specific data range (comma separated values) from a .txt file?
11 ビュー (過去 30 日間)
古いコメントを表示
Hi guys,
I read lots of similar questions but I cannnot solve the problem. I've downloaded Earth ephemerides from NASA JPL website(attached to this question there is the .txt file) and I need to extract only variable names line (row 23) and data from row 26 up to 29.
I want to avoid Matlab tool "import data", but rather I woulde prefer to use something like ""readtable" or similar. I tried to use readtable but I've troubles.
I tried to code something like that but it seems to not take the right lines.
clc; clear all; close all
% Ephemerides
file_name = 'Earth-Moon_sys_ephem_at_ast_epochs.txt';
opts = detectImportOptions(file_name)
opts.DataLines = [26, 29];
opts.VariableNamesLine = 34;
opts.VariableNames
opts.VariableTypes = ["double", "string", "double", "double", "double", "double", "double",...
"double", "double", "double", "double","double","double","double"];
EM_sys_eph = readtable(file_name ,opts)
0 件のコメント
採用された回答
Stephen23
2022 年 3 月 15 日
編集済み: Stephen23
2022 年 3 月 15 日
Make sure you specify the delimiter and (start) Range for DETECTIMPORTOPTIONS:
file_name = 'Earth-Moon_sys_ephem_at_ast_epochs.txt';
opts = detectImportOptions(file_name, 'Range',26, 'Delimiter',',');
opts.DataLines = [26,29];
opts.VariableNamesLine = 23;
opts.VariableTypes = ["double", "string", repmat("double",1,12)];
opts.VariableNamingRule = 'preserve';
EM_sys_eph = readtable(file_name, opts)
8 件のコメント
Stephen23
2022 年 3 月 15 日
編集済み: Stephen23
2022 年 3 月 15 日
If it works on your version, then:
- go for it, use it
- keep in mind that it might not work on other versions or OSs
The function READTABLE et al are being developed continuously, and can give different outputs for different versions (as we can see on this forum). Only you can decide if that is important for your work or not.
その他の回答 (1 件)
Arif Hoq
2022 年 3 月 15 日
try this:
A=readtable('Earth-Moon_sys_ephem_at_ast_epochs.txt','delimiter','tab');
B=table2cell(A(20,:));
parameter=split(B,',')';
C=table2cell(A(23:26,:));
data=split(C,',');
output=[parameter;data]
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Startup and Shutdown についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!