试图绘制一个函数,但只获得点?

时间:2014-03-27 14:02:10

标签: matlab plot

这是我的第一个需要MatLab的任务,所以我只是学习如何使用它。 正如我的问题所述,我的代码中必定存在一些错误,它使得点而不是看起来类似于平方根函数的函数。

h=0.1;
tf=1;
samples = round(tf/h+1);
x = ones (samples, 1);
y = zeros (samples, 1); 
y_true = zeros (samples, 1); 
hold on;
for n=1: samples ;
   t=(n-1)/10 +h;
   y_true = 1-exp (-t); 
   plot (t,y_true);
end;   
hold off;

t的值为00.10.20.3,依此类推,直至1。就在发布这个问题之前,我发现了hold()的用途,因为在此之前我会在中间找到一个点。谢谢你的时间。

2 个答案:

答案 0 :(得分:1)

您可以同时绘制所有点:

% Parameters
h=0.1;
tf=1;

% Process
samples = round(tf/h+1);
x = ones (samples, 1);
y = zeros (samples, 1); 
y_true = zeros (samples, 1); 
n = 1:samples;
t = (n-1)./10+h;
y_true = 1-exp(-t); 

% Plot
figure
plot(t,y_true,'b-*');

enter image description here

答案 1 :(得分:0)

从这段代码中可以清楚地看出,您打算构建一个包含所有点的向量:

x = ones(samples, 1);
y = zeros(samples, 1); 
y_true = zeros(samples, 1); 

要做到这一点,你可以使用矢量计算,如tashuhka所示,或者只是每次通过for循环存储一个元素。你可以用下标来做到这一点:

for n= 1:samples
   t(n) = (n-1)/10 + h;
   y_true(n) = 1-exp(-t); 
end

现在,您可以在for循环之外的一个步骤中绘制整个矢量。

最终代码:

h=0.1;
tf=1;
samples = round(tf/h+1);
x = ones(samples, 1);
y_true = zeros(samples, 1); 
for n = 1:samples
   t(n) = (n-1)/10 +h;
   y_true(n) = 1-exp(-t); 
end
plot(t, y_true);