#matlab #plot
#matlab #график
Вопрос:
В MATLAB, если я хочу отобразить плотность переменной V
, я должен сделать
[x, y] = ksdensity(V);
plot (y, x);
Если я это сделаю plot(ksdensity(V))
, это будет только график x
, а не x
Vs y
.
Есть ли более простая альтернатива, которую можно указать ksdensity()
в качестве аргумента plot()
и выполнить ту же работу, plot(y, x)
что и?
Комментарии:
1. Что не так с
plot(y, x)
?2. @Dan У меня есть несколько переменных, которые должны быть отображены на одном графике. Итак, я хочу сделать что-то вроде,
plot(density_of_variable_1,'color1'); hold on; plot(density_of_variable_2,'color2'), ..
и так далее. Если я пойду по маршруту plot (y, x), мне нужно будет ввести в два раза больше дополнительных переменных.
Ответ №1:
Вы можете преобразовать его в функцию, которая принимает V
и отображает y
vs x
:
function h = plot_ksdensity(V, varargin)
[x, y] = ksdensity(V);
h = plot (y, x, varargin{:});
end
использование varargin
означает, что у вас все равно будет доступ к plot
таким параметрам, как цвета. hold on
также будет работать, потому что это просто вызывает обычную plot
функцию.
Ответ №2:
К сожалению, нет. Если вы явно не укажете выходные данные, функция всегда будет возвращать крайний левый из списка выходных параметров. Чтобы убедиться в этом, создайте функцию ftest()
где-нибудь в вашем MATLAB path:
function [x, y] = ftest( )
x = 1;
y = 2;
end
затем вызовите его в окне командной строки без указания выходных данных
>> ftest()
ans =
1