在Matlab中绘制更多行

时间:2013-06-05 14:51:47

标签: matlab

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

x1 y1 x2 y2

这是一行,它表示一行的两个点。现在,我有很多这样的行 并且对于每行我需要绘制一条线。有没有一种有效的方法来做到这一点? 我是否必须使用for循环单独检查每一行?我使用什么命令 划线?

谢谢

2 个答案:

答案 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});绘制时这是结果: 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参数将为每列绘制单独的行,因此会产生:

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