从matlab中的文件绘制

plot from file in matlab

robot4_motors.txt

M 204 20795 20795 3000 0 16067 16066 3000 0 0 0 6000 0
M 524 20795 20794 3000 0 16067 16066 3000 0 0 0 6000 0
M 735 20795 20795 3000 0 16067 16066 3000 0 0 0 6000 0
M 995 20795 20795 3000 0 16067 16067 3000 0 0 0 6000 0
M 995 20795 20795 3000 0 16067 16067 3000 0 0 0 6000 0
M 1233 20795 20795 3000 0 16067 16067 3000 0 0 0 6000 0
M 1499 20795 20795 3000 0 16067 16067 3000 0 0 0 6000 0
M 1763 20795 20795 3000 0 16067 16067 3000 0 0 0 6000 0

这是一个数据文件。我想从文件中取出第 3 列和第 7 列并绘制它们。我在 matlab 中写下代码。

代码

f = fopen('robot4_motors.txt');
plot(f(:, 3), f(:, 7))

但是代码不起作用。

抛出错误位置 2 的索引超出数组边界(不得超过 1) .

trick1 错误(第 21 行) plot(f(:, 3), f(:, 7))

fopen returns 一个数字 ID,它指的是打开的文件,它不是矩阵。您需要解析文件以提取数据。

解析文件的一种方法是使用 dlmread,因为这是一个 space 分隔文件。

% Read data into M starting at row 0, column 1.
M = dlmread('robot4_motors.txt', ' ', 0, 1);

在此之后,M 将包含文件中除第一列(不是数字)之外的所有条目。

>> M
M = 
     204       20795       20795        3000           0       16067       16066        3000           0           0           0        6000           0
     524       20795       20794        3000           0       16067       16066        3000           0           0           0        6000           0
     735       20795       20795        3000           0       16067       16066        3000           0           0           0        6000           0
     995       20795       20795        3000           0       16067       16067        3000           0           0           0        6000           0
     995       20795       20795        3000           0       16067       16067        3000           0           0           0        6000           0
    1233       20795       20795        3000           0       16067       16067        3000           0           0           0        6000           0
    1499       20795       20795        3000           0       16067       16067        3000           0           0           0        6000           0
    1763       20795       20795        3000           0       16067       16067        3000           0           0           0        6000           0