使用matlab绘制轨迹

时间:2014-11-04 13:51:05

标签: matlab plot

我试图在matlab上绘制轨迹 具有轨迹的我的数据文件(try.txt)如下所示:

NumofTrajectories

TrajID1 #ofPoints x y x y....

TrajID2 #ofPoints x y x y....

示例:

7

0 23 898.6 673.0 859.1 669.9 813.7 667.8 776.8 664.0 739.8 662.1 699.9 654.7 664.5 649.6 625.3 645.5 588.2 640.6 552.3 634.2 516.6 628.2 477.2 624.3 442.1 613.6 406.7 603.4 369.5 599.8 332.7 594.1 297.4 585.2 258.6 583.7 224.1 573.1 191.2 556.8 152.7 554.0 115.1 546.0 79.6 535.8 

1 8 481.4 624.9 445.9 596.3 374.5 573.9 354.2 541.0 334.2 508.9 327.6 474.1 324.6 437.5 324.2 390.3 

2 24 151.6 570.8 188.3 556.5 225.1 547.7 257.9 529.4 292.9 509.8 326.8 496.8 356.2 476.0 391.2 463.3 423.7 447.9 455.7 431.8 489.2 416.0 524.3 405.3 560.0 395.9 595.8 385.6 632.8 376.1 671.5 372.0 706.9 361.8 742.3 347.3 778.0 334.5 820.5 336.5 856.5 325.0 894.5 309.5 946.1 309.9 990.5 287.0 

3 3 594.2 580.4 566.6 544.3 544.9 509.4 

4 5 281.8 661.9 266.8 623.4 246.2 576.4 229.7 541.0 220.9 498.4 

5 2 563.6 511.3 532.5 479.7 

6 5 571.9 617.7 525.6 576.4 481.0 551.9 456.8 524.2 419.7 474.0 

我试图在matlab上绘制这个 我的代码如下:

clc;
clear;
%read the input
importfile('try.txt')

%See how many trajectorys there are convert to number
nTraj=str2num(cell2mat(textdata));

%loop over the trajectories
for i = 1:nTraj
        disp(data(i,1));
        %print the current trajectory number of points
        disp(data(i,2));

        %get the x-y coordinates of each trajectory
        current_traj=data(i,2);
        for j=1:current_traj
            points=data(i,3:j*2+2);    
        end
        %print the x-y coordinates of each trajectory
        %disp(points);

        %seperate the x-y coordinates of each trajectory
        x=points(1:2:length(points)-1)
        y=points(2:2:length(points))

        xlabel('latitude');
        ylabel('longitude');
        plot(x,y,'r');
        grid on ;
        hold on;
end

功能importfile

function importfile(fileToRead1)
%IMPORTFILE(FILETOREAD1)
%  Imports data from the specified file
%  FILETOREAD1:  file to read

DELIMITER = ' ';
HEADERLINES = 1;

% Import the file
newData1 = importdata(fileToRead1, DELIMITER, HEADERLINES);

% Create new variables in the base workspace from those fields.
vars = fieldnames(newData1);
for i = 1:length(vars)
    assignin('base', vars{i}, newData1.(vars{i}));
end

代码有时会起作用并且通常会给我一个错误说:

Index exceeds matrix dimensions.
Error in ==> plotTrajectory at 23
            points=data(i,3:j*2+2);

有人可以解释错误并告诉我如何解决它吗?

1 个答案:

答案 0 :(得分:1)

try.txt中的轨迹有不同的长度。 importdata将使用第一行来确定数据的长度。如果另一条线是最长的,则该线将被分割为导入矩阵的几条线。至少这是调试显示的内容。我建议你使用另一种方法来读取你的文件。对我来说dlmread有效:

%read the input
data = dlmread('try.txt', ' ');
% remove header
data = data(2:end,:);
%See how many trajectorys there are convert to number
nTraj=size(data,1);

您可以使用此代码替换第一行,并删除importfile功能。