2015-12-15 6 views
2

Я хочу создать диаграмму, в которой будут представлены все пути, полученные в результате моделирования, а затем в точке t = T, чтобы преобразовать ее в горизонтальную гистограмму, представляющую частота конечных результатов.Matlab - как построить дорожки monte carlo, преобразующиеся в горизонтальную гистограмму в одной диаграмме

Это можно сделать в одной таблице в Matlab?

+0

Я не понимаю, что вы пытаетесь достичь. Я понимаю часть paths-vs-t. Но где вы хотите заговорить с правой стороны? Вдоль дополнительного измерения, так что результат 3d? Пожалуйста, дополните. О, вы хотите построить горизонтальную гистограмму, начиная с t = T, и продолжить дальше вправо? –

+0

Я не думаю, что это было бы тривиально: вам, вероятно, понадобится две оси (возможно, но не обязательно, в двух 'subplot's), с привязанными осями' y'. Первый для траекторий, второй для графика «barh», который показывает гистограмму (которую вы затем вычислите отдельно). Но так как ограничения осей могут отличаться для двух осей, использование 'linkaxes' /' linkprop' может быть несложным. –

+0

Да, я имею в виду переход в горизонтальную гистограмму в точке t = T – Michal

ответ

1

Я не думаю, что есть действительно хороший способ сделать это, но мне удалось взломать что-то похожее на то, что вы описываете. См. Ниже мой пример с методом Монте-Карло случайного блуждания.

% Setup, create test data 
col = [0 0.2 0.741] ; % colour 
rng(0) ; % reset random number seed 

n = 20 ; % number of bins 
Te = 1000 ; % simulation length 
T = 600 ; % length of trajectory to plot 
X = cumsum(randn(Te,1)) ; 

Гадкий код участка:

% create histogram based on the end of the sample 
[H,C] = hist(X(T+1:Te),n) ; 

% new figure 
fh = figure(999) ; 
clf() ; 

% trajectory for the first part of the sample 
ax0 = subplot(1,2,1) ; 
lh = plot(X(1:T),'Parent',ax0) ; 
lh.Color = col ; 

% histogram for the second part of the sample 
ax1 = subplot(1,2,2) ; 
bh = barh(ax1,C,H,1) ; 
bh.EdgeColor = col ; 
bh.FaceColor = col ; 
ax1.XTickLabel = '' ; 
ax1.YTickLabel = '' ; 

% make both axes have the same YLim property and make sure we don't clip anything 
YLim(2) = max(ax0.YLim(2),ax1.YLim(2)) ; 
YLim(1) = min(ax0.YLim(1),ax1.YLim(1)) ; 
ax1.YLim = YLim ; 
linkaxes([ax1,ax0],'y') ; 

% bump the axes together 
ax0.Position = [0.13 0.11 0.440552147239264 0.815] ; 

Это не красиво, но это работает. Результат:

enter image description here

+0

Да что-то вроде этого, за исключением того, что в левой части T будет n путей, а гистограмма справа будет представлять конец значения пути – Michal

+0

О, хорошо. Я не понял. Я отрегулирую свой ответ. –

 Смежные вопросы

  • Нет связанных вопросов^_^