使用for循环在Matlab中绘制方程

时间:2016-06-08 02:52:18

标签: matlab plot

我想用for循环绘制一个方程式。我已经尝试了几种不同的方法,但继续得到明显的常见错误"下标索引必须是真正的正整数或逻辑"。我要绘制的等式是 y(x)=(x ^ 4) - (4 * x ^ 3) - (6 * x ^ 2)+15

我尝试的最后一个代码如下:

y(0) = 15;
for x = [-3 -2 -1 0 1 2 3 4 5 6];
    y(x) = (x^4)-(4*x^3)-(6*x^2)+15;
end
plot(x,y)

2 个答案:

答案 0 :(得分:3)

从头开始,

y(0) = 15;

会出现以下错误:

  

下标索引必须是实数正整数或逻辑。

这是因为Matlab的索引从1开始。其他语言如C和Python从0开始。

Matlab可以直接使用向量。所以在你的代码中,根本不需要循环。
你可以这样做:

x = [-3 -2 -1 0 1 2 3 4 5 6];
y = (x.^4) - (4*x.^3) - (6*x.^2) + 15;
plot(x, y);

请注意,我们需要使用像.*.^这样的元素运算符来计算每个元素的矢量化值。因此,在操作员面前写入.点。

此外,我们可以使用colon operator生成x来大幅改善代码:

x = -3:6; % produces the same as [-3 -2 -1 0 1 2 3 4 5 6]
y = (x.^4) - (4*x.^3) - (6*x.^2) + 15;
plot(x, y);

如果您想要更精细的图表细节,请按照@Yvon的建议使用linspace

x = linspace(-3, 6, 100); % produces a vector with 100 points between -3 and 6.
y = x.^4-4*x.^3-6*x.^2+15;
plot(x,y)

答案 1 :(得分:0)

x = linspace(-3, 6, 100);
y = x.^4-4*x.^3-6*x.^2+15;
plot(x,y)