2-мерная гистограмма биннинга в matlab [дубликат]

Если вы получаете это сообщение во время сохранения или компиляции сборки, просто закройте все файлы, а затем откройте любой файл для компиляции и сохранения.

Для меня причина в том, что я переименовал файл, и старый файл все еще был открыт.

8
задан John 21 July 2011 в 16:59
поделиться

2 ответа

Вот моя версия для двумерной гистограммы:

%# some random data
X = randn(2500,1);
Y = randn(2500,1)*2;

%# bin centers (integers)
xbins = floor(min(X)):1:ceil(max(X));
ybins = floor(min(Y)):1:ceil(max(Y));
xNumBins = numel(xbins); yNumBins = numel(ybins);

%# map X/Y values to bin indices
Xi = round( interp1(xbins, 1:xNumBins, X, 'linear', 'extrap') );
Yi = round( interp1(ybins, 1:yNumBins, Y, 'linear', 'extrap') );

%# limit indices to the range [1,numBins]
Xi = max( min(Xi,xNumBins), 1);
Yi = max( min(Yi,yNumBins), 1);

%# count number of elements in each bin
H = accumarray([Yi(:) Xi(:)], 1, [yNumBins xNumBins]);

%# plot 2D histogram
imagesc(xbins, ybins, H), axis on %# axis image
colormap hot; colorbar
hold on, plot(X, Y, 'b.', 'MarkerSize',1), hold off

hist2d [/g1]

Обратите внимание, что я удалил «неотрицательное» ограничение, но сохранял (это может быть легко изменено на диапазон деления на равное количество указанных ячеек вместо «фракций»).

В основном это было вызвано сообщением @SteveEddins в блоге .

19
ответ дан Amro 27 August 2018 в 23:17
поделиться

Вы можете сделать что-то вроде:

max0 = max(fvec0) + 1;
max1 = max(fvec1) + 1;

% Combine the vectors
combined = fvec0 + fvec1 * max0;

% Generate a 1D histogram
hist_1d = hist(combined, max0*max1);

% Convert back to a 2D histogram
hist_2d = reshape(hist, [max0 max1]);

(Примечание: непроверено)

2
ответ дан Oliver Charlesworth 27 August 2018 в 23:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: