我试图让图例显示一个固定值,一个来自数组。我已设法获得要显示的固定值,当我手动从数组输入位置时,将显示。我希望从数组中选择的位置每次前进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
答案 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