Выработать на Ben Voigt's comment: более продвинутая техника будет заменить for
-loop с вызовом bsxfun
сгенерировать матрицу оценок M(i,j) = f(x(i),a(j))
и вызвать plot
с этой матрицей. Затем Matlab будет использовать столбцы матрицы и отображать каждый столбец с отдельными цветами.
%%// 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');
Вы также можете создать матрицу оценки с помощью ndgrid
, которая явно возвращает все комбинации значений x
и as
. Здесь вам нужно уделять больше внимания правильному векторизации кода. (Нам повезло, что bsxfun
подход работал без изменения оригинального 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))
Однако для начала, вы должны ознакомиться с петлями.
Ах, конечно ... вы захотите использовать 'bsxfun'. –
У меня есть файлы в формате pdf о матлабе с различными задачами и (иногда) примерами, к сожалению, к этой проблеме у меня нет никаких советов. В дополнение к предыдущим примерам это должно быть очень просто, но я думаю, что я что-то упустил ... Это не домашнее задание в любом случае, я пытаюсь понять, что Matlab сдал экзамен, и я основываюсь на этих файлах :) – Neri