1

我有以这种格式存储数据的输入文件:

x1 y1 x2 y2

那是一行,它代表一条线的两个点。现在,我有很多这样的行,我需要为每一行画一条线。有没有一些有效的方法来做到这一点?我是否必须使用 for 循环分别遍历每一行?我用什么命令画线?

谢谢

4

2 回答 2

1

尝试这样的事情,您可能需要更改%f %f %f %f格式:

fid = fopen('yourfile', 'r');

C = textscan(fid, '%f %f %f %f');

fclose(fid);

figure(100)
plot(C{:, 1}, C{:, 2}, C{:, 3}, C{:, 4}); % column based lines

figure(200)
plot([C{1} C{3}]', [C{2}, C{4}]'); % row based lines

;

于 2013-06-05T14:58:56.503 回答
0

进一步研究后,我发现另一个答案中的绘图方法并没有像预期的那样工作。

使用以下输入文件进行测试时:

0 1 3 2
1 2 9 4
5 6 7 8

从问题来看,这应该给出三条直线的图。第 1 行应该从坐标 x=0, y=1 开始并在点 x=3, y=2 终止。其余的也是如此。

阅读提供的代码时:

fid = fopen('yourfile', 'r');
C = textscan(fid, '%f %f %f %f');
fclose(fid);

C的结果值为C = {[0;1;5], [1;2;6], [3;9;7], [2;4;8]};。这一切都很好。

当用 This 绘制时plot(C{:, 1}, C{:, 2}, C{:, 3}, C{:, 4});,结果如下: 情节(C{:, 1}, C{:, 2}, C{:, 3}, C{:, 4});

这是因为 plot 将为 绘制一个线系列X=C{:,1}; Y=C{:,2};,在这个例子中,这两个线都是三个点长,另一条线X=C{:,3}; Y=C{:,4};

为了绘制三个单独的线,端点由[x1 y1],指定[x2 y2],您可以使用以下代码:

plot([C{1} C{3}]', [C{2}, C{4}]');

plot,当提供矩阵作为 X 和 Y 参数时,将为每列绘制一条单独的线,因此结果为:

情节([C{1} C{3}]', [C{2}, C{4}]');

于 2013-06-06T10:18:09.840 回答