在Matlab中绘制一组线

时间:2014-10-27 14:18:39

标签: matlab lines

我有一个带有设定点的矩阵,分为10组(以下示例)。每组点对应一条线;我该如何绘制所有线?

以下是矩阵组织方式的示例:

y = [
109.41  110.55  111.69  112.83  113.96  115.10  116.24  117.37  118.51  119.65
56.87   56.21   55.55   54.89   54.23   53.57   52.91   52.25   51.5    50.92
-265.16 -263.07 -260.99 -258.90 -256.81 -254.73 -252.64 -250.55 -248.47 -246.38 ];

这是我用来生成矩阵并尝试绘制所有行的代码:

for line = (1:n)
    for point = (1:10) 
        y(line,point) = [Y(line)-point*sin(Omega(line))];
    end
end

plot(0:1000,y,'linewidth',2)

2 个答案:

答案 0 :(得分:1)

假设Y大小为1 - 按 - nOmega大小为1 - 按 - n,那么你可以避免嵌套循环:

 y = bsxfun( @minus, Y, bsxfun( @times, (1:10)', sin( Omega ) ) ); %'
 plot( 1:n, y, 'LineWidth', 2 );

答案 1 :(得分:1)

我对你使用的代码有错误并不感到惊讶。 size(0:1000)1x1001。您的矩阵y的大小是多少?

根据您提供的数据,我将使用以下内容:

y = [109.41  110.55  111.69  112.83  113.96  115.10  116.24  117.37  118.51  119.65; ...
56.87   56.21   55.55   54.89   54.23   53.57   52.91   52.25   51.5    50.92; ...
-265.16 -263.07 -260.99 -258.90 -256.81 -254.73 -252.64 -250.55 -248.47 -246.38];

plot(0:100:900,y,'linewidth',2) % size(0:100:900) is 1x10 and size(y) is 3x10 so we're good

这给出了以下结果(在Octave中,在MATLAB中应该完全相同):

enter image description here