MATLAB和功能

时间:2009-11-13 00:04:17

标签: matlab

我想从等式中计算函数y(t)

y(t) = -3t^2+5, t>=0
y(t) = 3t^2+5, t<0

for -9 <= t <= with the step-size 0.5

我想用MATLAB绘制它。我以两种方式处理这个问题:

第一

t=0:0.5:9
y=-3*t^2+5

t1=-0.00000000001:0.5:-9
y1=3*t^2+5

plot(t,y,t1,y1)

第二个使用循环

t=-9:0.5:9

if(t>=0)
    y=-3*(t.^2)+5
else
    y=3.*(t.^2)+5
end

plot(t,y)

我的问题是上面两种方式似乎没有给出相同的答案......哪一个是正确答案?

3 个答案:

答案 0 :(得分:6)

您可以使用sign函数更轻松地执行此特定示例:

t = -9:0.5:9;
y = -sign(t)*3.*t.^2 + 5;
plot(t,y);

答案 1 :(得分:1)

在您第一次尝试时,您的t1定义应为:

t1 = 0:-0.5:-9;

注意增量上的减号。

使用“循环”,你似乎遗漏了实际的循环部分。尝试像

这样的东西
t = -9:0.5:9;
for idx = 1:length(t)
    if t(idx) <= 0
        y(idx) = -3*(t(idx).^2)+5

答案 2 :(得分:1)

这是一个更惯用的解决方案,避免了SIGN的情况,这不是唯一的区别。

t = -9:0.5:9
y = -3*t.^2+5
y(t<0) = 3*t(t<0).^2+5

plot(t, y)