我有兴趣在Matlab中绘制以下函数,但没有成功。
我无法策划积分。
x = -1:0.1:3;
if (x<=1)
y = x*x-x+1
plot(x,y)
else
y = 2*x+3
plot(x,y)
end
答案 0 :(得分:3)
您定义的if
语句采用整个数组的条件,这意味着所有条目应遵循该语句。由于只有前21个符合所提出的条件,if
语句会转到else
并绘制一条直线。
第一行的等式是不正确的,因为x*x
会导致错误,因为MATLAB假设这是一个矩阵乘法,并且大小不正确。您没有看到此错误的原因是if
语句,因为如上所述,从未到达此行。你应该使用点乘法来改变那个等式,这就像元素一样,而不是数组/矩阵式。
第二行的等式是正确的。
如果你的if/else
陈述是正确的,那么你的第一张图会被第二张图覆盖,因为你没有指定hold on
切换到数字。
作为一个注释,我在每个语句后也使用了分号;
,这阻止了它将行的输出打印到控制台。
x1 = [-1:0.01:1].';
x2 = [1:0.01:3].';
y1 = x1.^2-x1+1;
y2 = 2*x2+3;
figure;
hold on
plot(x1,y1)
plot(x2,y2)