Как я могу создать CDF из большого набора данных в MATLAB? - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть 6 наборов данных, каждый из которых содержит 10000 записей.

Я хочу построить их CDF для сравнения.

В MATLAB я использую следующий код:

figure()
ksdensity(dataset1,'Support','positive','Function','cdf',...
          'NumPoints',5)
xlabel('Error')
ylabel('CDF')

Но я не уверен, это правильно или неправильно? Как я могу это сделать?

Я получаю следующую цифру. This is my sample image and I want Marker point also

1 Ответ

0 голосов
/ 07 ноября 2019

Похоже, вы получили желаемый результат, за исключением легенды и маркеров. Если вам нужен больший контроль над функциями построения, я бы предложил получить необходимые элементы для построения графика из ksdensity, используя [f,xi] = ksdensity(x), а затем нанести график отдельно.

Example cumulative distribution functions.

% MATLAB R2019a
% Example Data 
X = wblrnd(2,3,10000,1);
Y = wblrnd(3,2,10000,1);
Z = wblrnd(2.5,2.5,10000,1);
Data = [X Y Z];         

NumPointCDF = 5;       % Number of points to estimate CDF with

figure, hold on
for ii = 1:size(Data,2)  % for each column of Data
    [fii, xii] = ksdensity(Data(:,ii),'Support','positive','Function','cdf',...
          'NumPoints',NumPointsCDF);
    p(ii) = plot(xii,fii,'LineWidth',1.1,'Marker','.','MarkerSize',12);
end
legend('X','Y','Z')

В качестве альтернативы, вы можете просто построить каждый первый,

figure, hold on
for ii = 1:size(Data,2)  % for each column of Data
    [fii, xii] = ksdensity(Data(:,ii),'Support','positive','Function','cdf',...
          'NumPoints',NumPointsCDF);
    p(ii) = plot(xii,fii);
end

, а затем изменить свойства каждой линиипозже с p(1).foo (см. здесь).

Например, по одному: p(1).Marker = 's' % square

Или все сразу:

for ii = 1:size(Data,2)
    p(ii).Marker = '.';          % Adjust specific properties of p(ii) as needed
    p(ii).LineWidth = 1.2;
end

Ссылка:
1. Свойства графического объекта
2. Доступ к значениям свойства

...