Azzera filtri
Azzera filtri

How to read the entire column of a file and save it in a variable?

5 visualizzazioni (ultimi 30 giorni)
Dear All I have the below text file (part of it).
=====================================================================
24652 1996-063A ARABSAT-2B
Launched: 1996-11-13 (318) Start Date: 1996-06-12 (164)
Decayed: Stop Date: 2003-12-20 (354)
=====================================================================
1 24652U 96063A 96318.74847837 -.00000020 00000-0 00000+0 0 14
2 24652 3.9929 210.6007 7281127 177.7757 190.4436 2.27277888 06
1 24652U 96063A 96319.62211352 -.00000020 00000-0 00000+0 0 31
2 24652 3.9929 210.3183 7284735 178.4392 185.2995 2.27373269 12
1 24652U 96063A 96319.62351606 .00008082 00000-0 30835-2 0 24
2 24652 3.9764 210.1654 7280836 178.5436 186.6267 2.27380102 20
1 24652U 96063A 96319.62356237 .00009638 00000-0 38025-2 0 37
2 24652 3.9632 210.3512 7280110 178.4006 186.6625 2.27374993 25
1 24652U 96063A 96320.05952563 -.00002597 00000-0 -98092-3 0 63
2 24652 3.9623 210.1661 7275699 178.7092 185.6294 2.27896863 39
1 24652U 96063A 96320.49676119 -.00000127 00000-0 10000-4 0 72
I am using the following code to read the each line.
fid=fopen('2B.txt');
A=textscan(fid,'%s','HeaderLines',5);
Data=reshape(A{1}(1:end-3,:),9,[])';
fclose(fid);
l1=Data(1:2:end,:);
l2=Data(2:2:end,:);
I want to read all the elements of line 1 (l1) column 4(i.e. 96318.74847837, 96319.6221135296, and so on..)
I tried t=l1(:,4) but it doesn't work. It only displays 96318.74847837
please help.
  2 Commenti
Hamza
Hamza il 23 Set 2012
It's basically a TLE data(Two line element) and those '0's refer to drag term and 2nd derivative of mean motion.

Accedi per commentare.

Risposta accettata

Azzi Abdelmalek
Azzi Abdelmalek il 22 Set 2012
Modificato: Azzi Abdelmalek il 22 Set 2012
fid=fopen('2B.txt');
A=textscan(fid,'%s','HeaderLines',5);
fclose(fid);
n=numel(A{:});
Data=reshape(A{1},9,[])';
l1=Data(1:2,:);
l2=Data(2:2,:);
t=l1(:,4:end)
%or using fgetl.
fid = fopen('2B.txt');
tline = fgetl(fid);
out=tline
while ischar(tline)
tline = fgetl(fid);
out=char(out,tline)
end
fclose(fid);
n=size(out,1);
res=[]
for k=6:n
r=regexp(out(k,:),' ','split')
r1=cell2mat(cellfun(@(x) ~isempty(x),r,'Uni',false))
r2=r(r1)
res=[res;cellfun(@(x) str2num(x),r2(4:end))]
end
  3 Commenti
Hamza
Hamza il 24 Set 2012
I was talking about my previous code that t=l1(:,4) is now displaying all the elements of 4th column. Which it wasn't displaying previously.

Accedi per commentare.

Più risposte (1)

bym
bym il 22 Set 2012
try using this
A=textscan(fid,repmat('%s',1,9),'HeaderLines',5);
>> A{4}(1:2:end)
ans =
'96318.74847837'
'96319.62211352'
'96319.62351606'
'96319.62356237'
'96320.05952563'
'96320.49676119'

Categorie

Scopri di più su Large Files and Big Data in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by