2014-10-27 89 views
-2

我有一个设定点的矩阵,分成10个组(下面的例子)。每组点对应一条线;我如何绘制所有线?在Matlab中绘制一组线条

这里的矩阵是如何组织的一个例子:

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

我编辑了这个问题,添加了我现在使用的代码。 – 2014-10-27 14:39:51

+0

请尽量不要在Matlab中使用'i'和'j'作为变量名称(http://stackoverflow.com/questions/14790740/using-i-and-j-as-variables-in-matlab) ,尤其是['j * sin()'](http://en.wikipedia.org/wiki/Euler's_formula)可能会引起误导...... – Shai 2014-10-27 14:45:33

+0

'n'是什么?什么是'Y'和'Omega'它们与你在问题开始时发布的10x3数字有什么关系?请花点时间编辑你的问题,使其明智。 – Shai 2014-10-27 14:47:13

回答

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 

此给出以下结果(在八度,应在MATLAB完全一样):

enter image description here

1

假设Y大小为1 -by- n,Omega的大小为1 -,则可以避免嵌套循环:

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