• Lunes 29 de Abril de 2024, 12:02

Autor Tema:  'fscanf' Difícil cadena de control  (Leído 1214 veces)

PinkPanther7

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
'fscanf' Difícil cadena de control
« en: Sábado 19 de Marzo de 2011, 22:20 »
0
Mis datos tienen este formato:

DATE,GPS_TIME,GPS_FIX,WGS84_LON,WGS84_LAT,WGS84_ALT,WGS84_HAE,SPEED_KPH,STATION_ID,REMARK,AUX_X0,AUX_X1,AUX_X2,AUX_X3,AUX_X4,AUX_X5,AUX_X6,AUX_X7,AUX_X8,AUX_X9,AUX_X10,AUX_X11,AUX_X12
110203,120246,20915,-5.1281957,36.8708692,800.8,849.65,0.1,126,,$PDLMA,+12.67,+23.4,+0.3,+4.9,,,,,,,,
110203,120247,20915,-5.1281957,36.8708692,800.79,849.64,0,126,,$PDLM1,130307,+14.1,+1.37,+16.6,+0.60,,,,,,,
110203,120248,20915,-5.1281963,36.8708696,800.65,849.5,0.1,126,,$PDLM1,130308,+14.1,+1.37,+16.9,+0.60,,,,,,,
110203,120249,20915,-5.1281963,36.8708697,800.64,849.49,0.1,126,,$PDLM1,130309,+14.2,+1.37,+16.4,+0.60,,,,,,,
110203,120250,20915,-5.1281963,36.8708696,800.64,849.48,0,126,,$PDLM1,130310,+14.2,+1.37,+16.4,+0.60,,,,,,,
110203,120251,20915,-5.1281964,36.8708694,800.7,849.55,0,126,,$PDLM1,130311,+14.1,+1.38,+16.5,+0.60,,,,,,,

(NOTA: A PARTIR DE LA FILA SIGUIENTE ME INTERESAN LOS DATOS)

110203,120251.37,,,,,,,,,$PDLM2,130311,+9.6,+1.42,+15.2,+2.03,,,,,,,
110203,120251.73,,,,,,,,,$PDLMA,+12.67,+23.4,+1.0,+5.2,,,,,,,,
110203,120252.01,,,,,,,,,$PDLM1,130312,+14.0,+1.37,+16.4,+0.60,,,,,,,
110203,120252.37,,,,,,,,,$PDLM2,130312,+9.6,+1.41,+15.2,+2.03,,,,,,,
110203,120252.72,,,,,,,,,$PDLMA,+12.67,+23.4,+0.6,+4.9,,,,,,,,
110203,120253,20915,-5.1281964,36.8708693,800.71,849.56,0,126,,,,,,,,,,,,,,
110203,120253.38,,,,,,,,,$PDLM1,130313,+14.0,+1.37,+16.5,+0.59,,,,,,,
110203,120253.74,,,,,,,,,$PDLM2,130313,+9.4,+1.43,+15.2,+2.04,,,,,,,
110203,120254.09,,,,,,,,,$PDLMA,+12.67,+23.4,+0.2,+4.9,,,,,,,,

(LA SERIE DE DATOS CONTINUARÍA)

Estoy haciendo esto:
% ----------
% Primera parte
% ----------
clear all
close all
clc
% Para quitar los encabezados
fid=fopen('setenilMat.txt','r');
enc=fgetl(fid); %Primera fila de encabezado
enc_2=fgetl(fid); %Segunda fila...
enc_3=fgetl(fid);
enc_4=fgetl(fid);
enc_5=fgetl(fid);
enc_6=fgetl(fid);
enc_7=fgetl(fid);
% Para decirle cómo leer los datos y cómo quiero que salga la matriz de datos
M=fscanf(fid,'%i,%f,,,,,,,,,%c,5,%f,%f,%f,%f,,,,,,,',[7,inf]);
% ----------
% Segunda parte
% ----------
M=M';
% Teniendo en cuenta los encabezados
DATE=M(:,1); %año mes día
GPS_TIME=M(:,2);
GPS_FIX=M(:,3);
WGS84_LON=M(:,4);
WGS84_LAT=M(:,5);
WGS84_ALT=M(:,6);
WGS84_HAE=M(:,7);
SPEED_KPH=M(:,8);
STATION_ID=M(:,9);
REMARK=M(:,10);
AUX_X0=M(:,11);
AUX_X1=M(:,12);
AUX_X2=M(:,13);
AUX_X3=M(:,14);
AUX_X4=M(:,15);
AUX_X5=M(:,16);
% Matrices vacías, una para $PDLM1, $PDLM2, $PDLMA
M1=zeros(size(M));
M2=zeros(size(M));
MA=zeros(size(M));
[fila colum]=size(M);
n=1;
for i=1:fila
    for j=1:colum
        n=n+1;
        if M(i,j)='$PDLM1'
            M1(i,j)=M(i,j);
        elseif M(i,j)='$PDLM2'
            M2(i,j)=M(i,j);
        elseif M(i,j)='$PDLMA'
            MA(i,j)=M(i,j);
        else
            M(i,j)=[];
        end
    end
end
Mfin=[M1; M2; MA]
% ----------
% Final
% ----------

Resultado de la Primera parte:

1,102e+005
1,2025e+005
36

Osease, no consigo que me lo lea bien y no me da error para saber dónde está el fallo.
Muchas gracias por adelantado,
Aura.