在Matlab中绘制一组线条
问题描述:
我有一个设定点的矩阵,分成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)
答
我并不感到惊讶,你得到的错误与你使用的代码有关。 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完全一样):
答
假设Y
大小为1
-by- n
,Omega
的大小为1
-,则可以避免嵌套循环:
y = bsxfun(@minus, Y, bsxfun(@times, (1:10)', sin(Omega))); %'
plot(1:n, y, 'LineWidth', 2);
我编辑了这个问题,添加了我现在使用的代码。 – 2014-10-27 14:39:51
请尽量不要在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
'n'是什么?什么是'Y'和'Omega'它们与你在问题开始时发布的10x3数字有什么关系?请花点时间编辑你的问题,使其明智。 – Shai 2014-10-27 14:47:13