function [BivarHist]= findBivarHist(obj,fields,win_width) % finds bivariate histogram of mean angle (theta) and resultant vector % length (r_vec) output from findSlideWinParams % uses histcounts2 with normalization set to 'probability' % probability across all trials within one obj if nargin < 3 || isempty(win_width) win_width = 2000; end %%%find mean angle and resultant vector length [theta, r_vec, numWindows] = findSlideWinParams(obj,fields,win_width); %theta & r_vec are of sizes numTrials x numWindows %theta ranges from [-pi,pi]; assert(isequal(size(theta),size(r_vec)), 'Error. Run findSlideWinParams again.') %%%set bins rBinWidth = 1/10; rBins = [0:rBinWidth:1]; angBinWidth = deg2rad(3.75); startingBins = [-pi:angBinWidth:pi]; % [0:angBinWidth:360]; % add binWidth to all the bin edges and do the same to the angle data angBinsShifted = startingBins + 0.5*angBinWidth; thetaValsShifted = theta + 0.5*angBinWidth; % Get frequency of each 2d bin [N] = histcounts2(thetaValsShifted(:),r_vec(:),angBinsShifted,rBins, 'Normalization','Probability'); BivarHist = []; BivarHist.prob = [N]; BivarHist.fields = fields; BivarHist.angBinsShifted = angBinsShifted; obj.BivarHist = []; obj.BivarHist = BivarHist; %% % % % % [fname] = getFigName(fields); % fcells = fieldnames(fields); % fname = [fcells{1},'=',num2str(fields.(fcells{1}))]; % if length(fcells) > 1 % fidx = 1; % while fidx < length(fcells) % fname = [fname, [', ',fcells{fidx+1},'=',num2str(fields.(fcells{fidx+1}))]]; % fidx = fidx+1; % end % end % % % figure % for tidx = 1:size(theta,1) % % % subplot(1,size(theta,1),tidx) % % h(tidx) = polarhistogram(theta(tidx,:),'BinWidth',BW, 'Normalization','pdf'); % % % hp(tidx) = histogram2Polar(theta(tidx,:),r_vec(tidx,:),'Normalization','pdf'); % nbins_theta = 97; % nbins_rvec = 21; % figure(tidx+70) % hh(tidx) = histogram2(theta(tidx,:),r_vec(tidx,:),[nbins_theta nbins_rvec],'XBinLimits',[-pi,pi],'YBinLimits',[0 1],'Normalization','pdf'); % figure(tidx+80) % hhh(tidx) = histogram2(theta(tidx,:),r_vec(tidx,:),[nbins_theta nbins_rvec],'XBinLimits',[-pi,pi],'YBinLimits',[0 1],'Normalization','count'); % figure(tidx+90) % hhhh(tidx)= histogram2(theta(tidx,:),r_vec(tidx,:),[nbins_theta nbins_rvec],'XBinLimits',[-pi,pi],'YBinLimits',[0 1],'Normalization','probability'); % %since hh is a figure handle that is deleted after closing the figure % %save fields within hh in BiHist structure % BivarHist.Values(:,:,tidx) = hh(tidx).Values; % BivarHist.Counts(:,:,tidx) = hhh(tidx).Values; % BivarHist.Prob(:,:,tidx) = hhhh(tidx).Values; % BivarHist.NumBins(:,:,tidx) = hh(tidx).NumBins; % BivarHist.XBinEdges(:,:,tidx) = hh(tidx).XBinEdges; % BivarHist.YBinEdges(:,:,tidx) = hh(tidx).YBinEdges; % BivarHist.BinWidth(:,:,tidx) = hh(tidx).BinWidth; % % view([90 90]) % end % set(gcf,'name',fname) % end