我想绘制一个函数y = 1-exp(c),其中定义了x的范围。该图将介于x和函数y之间。情节只显示1点而不是指数显示一系列点。我是Matlab.Sp中的新手,请帮助我,我出错了这里是代码:
for x = -10:0.25:10
if(x>0)
c=-6*x;
m=exp(c);
y = 1-m
end
plot(x,y,'o')
xlabel('x')
ylabel('y')
title('Plot')
end
答案 0 :(得分:2)
这应该这样做:
x = -10:0.25:10; % define the x vector
c= -5*x.*(x>0); % using a logical condition the 'if' is avoided
y = 1-exp(c); % calc y given c
plot(x,y,'o')
xlabel('x')
ylabel('y')
title('Plot')
没有'for'循环或'if'需要......
答案 1 :(得分:2)
你的问题是for循环。它正在重置y的值并重新绘制每个循环的一个点。根本不需要那个循环。这段代码可以解决y = 1-exp(A * x)
的问题编辑(2012-10-30)OP表示对于x <= 0,y为零。上面答案中的@Nate's代码可能是最好的,但在这里我使用逻辑索引来显示执行相同操作的不同方法。
x = -10:0.25:10; % <vector>
y = zeros(size(x)); % prealocate y with zeros and make it the same size as x
y(x>0) = 1 - exp(-5*x(x>0)); % only calculate y values for x>0
plot(x,y,'o')
xlabel('x')
ylabel('y')
title('Plot')