Matlab,每次循环执行时都希望在图例中放置数组的下一个值

时间:2014-12-01 23:00:47

标签: arrays matlab

我试图让图例显示一个固定值,一个来自数组。我已设法获得要显示的固定值,当我手动从数组输入位置时,将显示。我希望从数组中选择的位置每次前进1。我试图使用我在脚本中定义的n变量,但它似乎不起作用。此时我输入的值为4,这将从数组中选择第4个值。我是matlab的新手,不能为我的生活思考如何做到这一点。任何帮助表示赞赏。这是我正在处理的剧本。

clear
clc

f = @(x,k,lamda) ((lamda.^k).*(x.^(k-1)).*(exp(-lamda.*x))./(factorial(k-1)));

colors = ['k', 'r' , 'g', 'b', 'y', 'm', 'c'];

hold on
n=1;
k = 5;
x = 0 :0.1: 10;

for lamda = 1 : 0.2 : 2;

    ncol= mod(n,7)+1;
    plot(x,f(x,k,lamda), 'Color', colors(ncol))

    l = 1 : 0.2 : 2;

    legstr(n,:) = strcat ('k = ', num2str(k), '  Lamda = ', num2str (l(4)));

    legend(legstr)
    title('Erlang Distribution')
    xlabel('X')
    ylabel('f(x,k,lamda)')

    n=n+1;

end


hold off

1 个答案:

答案 0 :(得分:1)

你快到了。无需引入另一个向量来拉取,因为在每个循环迭代中分配给lamda的值将起作用。此外,您必须将legstr从矩阵更改为单元格数组,以处理lamda有时在小数位上有一个额外数字的事实,这将导致图例字符串更长或更短,取决于。

clear all
clc

f = @(x,k,lamda) ((lamda.^k).*(x.^(k-1)).*(exp(-lamda.*x))./(factorial(k-1)));

colors = ['k', 'r' , 'g', 'b', 'y', 'm', 'c'];

hold on
n=1;
k = 5;
x = 0 :0.1: 10;

for lamda = 1 : 0.2 : 2;

    ncol= mod(n,7)+1;
    plot(x,f(x,k,lamda), 'Color', colors(ncol))

%     l = 1 : 0.2 : 2;

    legstr{n} = strcat ('k = ', num2str(k), '  Lamda = ', num2str (lamda));

    legend(legstr)
    title('Erlang Distribution')
    xlabel('X')
    ylabel('f(x,k,lamda)')

    n=n+1;

end

hold off