Matlab отображает ksdensity без предварительного сохранения его аргументов

#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