怎么用matlab画出下面分段函数的图像?

我写的不知道哪里有错
n=-10:1:10;
if n>=-4&n<=-1
x=2*n+10;
else if n>=0&n<=4
x=6;
else
x=0;
end
end
plot(n,x)
求指点 谢谢
想问下我的哪里有问题 有人说下吗- -

%% forfavonian9


n = -10:1:10;

x = zeros(size(n));

for i = 1:21;

    if n(i) >= -4 && n(i) <= -1

        x(i) = 2 * n(i) + 10;

    elseif n(i) >= 0 && n(i) <= 4

    x(i) = 6;

    else

        x(i) = 0;

    end

end

plot(n,x,'.-')


A = [1 2 3;4 5 6;7 8 9; 10 11 12];

[v,i] = max(A,[],1);


追问

我想问下我的哪里有问题呀?谢谢

追答

    n = -10:1:10;这一行决定了n是一个向量,表达式if n>=-4&n<=-1中是把n当作一个标量来处理的,这样就会出错。

    x=2*n+10;等同样的道理,如果n为向量则x为向量,如果n为标量则x为标量。所以在plot(n,x)中如果为标量,那么只能描出一个点,如果为向量就能描出一系列的点。

    所以根据你的思路需要用for循环依次进行每一个点的计算,就像我发上来的程序这样,最后两行是粘错的,忽略它们。

希望对你有帮助。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-02

myfun = @(x) (2*x+10).*(x>=-4 & x<=-1)+6.*(x>=0 & x<=4);


n=-10:10;

y=myfun(n);

plot(n,y,'r-o')


本回答被提问者和网友采纳
第2个回答  2014-10-31

n=-10:1:10;

for k=1:length(n)

    if n(k)>=-4&&n(k)<=-1

        x(k)=2*n(k)+10;

    else if n(k)>=0&&n(k)<=4

            x(k)=6;

        else

            x(k)=0;

        end

    end

end

plot(n,x,'b:*')

第3个回答  2019-04-27
myfun = @(x) (2*x+10).*(x>=-4 & x<=-1)+6.*(x>=0 & x<=4);
fplot(myfun)
相似回答