我有一个带有设定点的矩阵,分为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)
答案 0 :(得分:1)
假设Y
大小为1
- 按 - n
,Omega
大小为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中应该完全相同):