matlab绘制一系列函数

时间:2015-01-19 20:07:09

标签: matlab function plot

生成显示

图表的图表
y=(2*a+1)*exp(-x)-(a+1)*exp(2*x)

在x∈< -2,4>的范围内。对于介于-3和3之间的所有整数值

我知道如何为2个值制作典型的绘图并在轴上设置范围,但是如何根据参数a绘制图形?

2 个答案:

答案 0 :(得分:3)

详细说明Ben Voigt's comment:更高级的技术是通过调用for来替换bsxfun - 循环,以生成M(i,j) = f(x(i),a(j))plot的评估矩阵使用此矩阵调用%%// Create a function handle of your function f = @(x,a) (2*a+1)*exp(-x)-(a+1)*exp(2*x); %%// Plot the data x = linspace(-2, 4); as = -3:3; plot(x, bsxfun(f,x(:),as)); %%// Add a legend legendTexts = arrayfun(@(a) sprintf('a == %d', a), as, 'uni', 0); legend(legendTexts, 'Location', 'best'); 。然后,Matlab将使用矩阵的列,并使用单独的颜色绘制每列。

ndgrid

您还可以使用x创建评估矩阵,明确返回asbsxfun值的所有组合。在这里你必须密切注意正确地矢量化代码。 (我们很幸运f方法无需更改原始f = @(x,a) (2*a+1).*exp(-x)-(a+1).*exp(2*x); %// Note the added dots. [X,As] = ndgrid(x,as); plot(x, f(X,As)) 就可以了。)

{{1}}

Family of plots

然而对于初学者来说,你应该熟悉循环。

答案 1 :(得分:1)

您可以使用简单的for循环执行此操作,如下所示。您基本上遍历a的每个值并绘制相应的y函数。

clear
clc
close all

x = -2:4;

%// Define a
a = -3:3;

%// Counter for legend
p = 1;
LegendText = cell(1,numel(a));

figure;
hold on %// Important to keep all the lines on the same plot.

for k = a

    CurrColor = rand(1,3);

    y= (2*k+1).*exp(-x)-(k+1).*exp(2.*x);

    plot(x,y,'Color',CurrColor);

    %// Text for legend
    LegendText{p} = sprintf('a equals %d',k);
    p = p+1;
end
legend(LegendText,'Location','best')

其中包含以下内容:

enter image description here

您可以根据需要自定义图表。希望有助于您入门!