У меня возникла проблема.
Подключил ГПС приемник к компу.
Открыл в Матлаб СОМ порт. Подключился к ГПС приемнику. Считал NMEA информацию. А как теперь ее разобрать? Чтоб выделить Широту, долготу, время?
Листинг программы следующй:
%Create a serial port object.
obj1 = instrfind('Type', 'serial', 'Port', 'COM3', 'Tag', '');
%Create the serial port object if it does not exist
%otherwise use the object that was found.
if isempty(obj1)
obj1 = serial('COM3');
else
fclose(obj1);
obj1 = obj1(1)
end
%Connect to instrument object, obj1.
fopen(obj1);
%Read NMEA sequencies
for i=1:100
data1 = fscanf(obj1);
ID=sscanf(data1,'%6c',1)
If ID == '$GPRMC'
[UTC, Status, Latitude, NS, Longitude, EW, Speed, Course, Date, Magnetic, Mode]=strread(data1(8:end),'%s %s %s %s %s %s %s %s %s %s %s', 'delimiter',',')
Time(i)=str2num(UTC(1:2));
Time(i)=Time(i)+str2num(UTC(3:4))/60;
Time(i)=Time(i)+str2num(UTC(5:end))/3600;
%Time(i)=Time(i)+str2num(UTC(5:9))/3600;
Lat(i)=str2num(Latitude(1:2));
Lat(i)=Lat(i)+str2num(Latitude(3:end))/60;
%Lat(i)=Lat(i)+str2num(Latitude(3:10))/60;
if (NS == 'S')|(NS == 's')
Lat(i)=-Lat(i);
end
Long(i)=str2num(Longitude(1:3));
Long(i)=Long(i)+str2num(Longitude(4:end))/60;
%Long(i)=Long(i)+str2num(Longitude(4:11))/60;
if (EW == 'W')|(EW == 'w')
Long(i)=360-Long(i);
end
Vt(i)=str2num(Speed);
Psi(i)=str2num(Course);
end
%Disconnect from instrument object, obj1.
fclose(obj1);
%Clean up all objects.
delete(obj1);
Но вот не работает код

После строки
[UTC, Status, Latitude, NS, Longitude, EW, Speed, Course, Date, Magnetic, Mode]=strread(data1(8:end),'%s %s %s %s %s %s %s %s %s %s %s', 'delimiter',',')
вылезает ошибка. Index Exceed Matrix Dimension
Когда я открыл переменную Status, то там было следующее:
UTC =
'182524'
С ковычками!!!!
А str2num не воспринимает строковую переменную в данном виде!
Может кто подскажет в чем проблема и как выделить информацию из NMEA???