我有以这种格式存储数据的输入文件:
x1 y1 x2 y2
这是一行,它表示一行的两个点。现在,我有很多这样的行 并且对于每行我需要绘制一条线。有没有一种有效的方法来做到这一点? 我是否必须使用for循环单独检查每一行?我使用什么命令 划线?
谢谢
答案 0 :(得分: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
答案 1 :(得分: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]};
。这一切都很好。
用plot(C{:, 1}, C{:, 2}, C{:, 3}, C{:, 4});
绘制时这是结果:
这是因为情节会为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参数将为每列绘制单独的行,因此会产生: