我有以这种格式存储数据的输入文件:
x1 y1 x2 y2
那是一行,它代表一条线的两个点。现在,我有很多这样的行,我需要为每一行画一条线。有没有一些有效的方法来做到这一点?我是否必须使用 for 循环分别遍历每一行?我用什么命令画线?
谢谢
我有以这种格式存储数据的输入文件:
x1 y1 x2 y2
那是一行,它代表一条线的两个点。现在,我有很多这样的行,我需要为每一行画一条线。有没有一些有效的方法来做到这一点?我是否必须使用 for 循环分别遍历每一行?我用什么命令画线?
谢谢
尝试这样的事情,您可能需要更改%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
;
进一步研究后,我发现另一个答案中的绘图方法并没有像预期的那样工作。
使用以下输入文件进行测试时:
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});
,结果如下:
这是因为 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 参数时,将为每列绘制一条单独的线,因此结果为: