0

我想绘制一个函数 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
4

2 回答 2

2

你的问题是for循环。它正在重置 y 的值并在每个循环中重新绘制一个点。你根本不需要那个循环。这段代码可以解决 y = 1-exp(A*x)

编辑(2012-10-30)OP 说对于 x<=0,y 为零。@Nate上面答案中的代码可能是最好的,但在这里我使用逻辑索引来展示做同样事情的不同方式。

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')
于 2012-10-26T07:48:06.173 回答
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'......

于 2012-10-26T07:39:47.237 回答