rmeddis@38: function plotIFRAN(data_matrix,start_time,end_time,sfreq,BFlist,plothandle) rmeddis@38: rmeddis@38: %function that produces a plot similar to the plots in Secker-Walker, JASA rmeddis@38: %1990 Fig.2 (Neurograms) from a IFRAN data matrix rmeddis@38: %Tim Jürgens, January 2011 rmeddis@38: rmeddis@38: %plot 50ms right from the middle of the signal rmeddis@38: time_axis = [0:1/sfreq:(size(data_matrix,2)-1)/sfreq]; rmeddis@38: %start_time = size(data_matrix,2)/2/sfreq-0.025; %start time to plot in s rmeddis@38: %temporal_length = min([0.05 size(data_matrix,2)/sfreq]); %length to plot in s, at least 50ms or the length of the stimulus rmeddis@38: [tmp, start_time_index] = min(abs(start_time-time_axis)); rmeddis@38: %end_time = start_time+temporal_length; rmeddis@38: [tmp, end_time_index] = min(abs(end_time-time_axis)); rmeddis@38: rmeddis@38: rmeddis@38: %smoothing using a 4-point hamming window rmeddis@38: hamm_window = hamming(4); rmeddis@38: for iCounter = 1:size(data_matrix,1) rmeddis@38: for jCounter = 2:length(time_axis)-2 %start with 2 and end with 2 samples rmeddis@38: %less the length of time_axis in order not to get in conflict with the length of rmeddis@38: %the hamm_window rmeddis@38: smoothed_data_matrix(iCounter,jCounter-1) = ... rmeddis@38: data_matrix(iCounter,(jCounter-1):(jCounter+2))*hamm_window./sum(hamm_window); rmeddis@38: end rmeddis@38: end rmeddis@38: rmeddis@38: smoothed_time_axis = time_axis(2:end-2); rmeddis@38: rmeddis@38: if ~exist('plothandle'), plothandle=figure; end rmeddis@38: rmeddis@38: verticalshift = 1000; %vertical shift of single time series in z-coordinate units rmeddis@38: Tickvector = []; rmeddis@38: TickLabels = []; rmeddis@38: for iCounter = 1:size(data_matrix,1) rmeddis@38: set(gcf,'Currentaxes',plothandle); rmeddis@38: rmeddis@38: %multiply by 1000 to set abscissa to ms units rmeddis@38: verticalposition = -verticalshift*(iCounter-1); rmeddis@38: plot(1000.*smoothed_time_axis(start_time_index:end_time_index), ... rmeddis@38: smoothed_data_matrix(size(data_matrix,1)-iCounter+1,start_time_index:end_time_index)+verticalposition, ... rmeddis@38: 'k','LineWidth',0.5); rmeddis@38: xlim([1000*start_time 1000*end_time]); rmeddis@38: if mod(iCounter,5) == 1 %set best frequency as a label every 5 channels rmeddis@38: Tickvector = [Tickvector verticalposition]; rmeddis@38: TickLabels = [TickLabels; BFlist(size(data_matrix,1)-iCounter+1)]; rmeddis@38: end rmeddis@38: hold on; rmeddis@38: end rmeddis@38: set(gca,'yTick',Tickvector(end:-1:1),'yTickLabel',num2str(TickLabels(end:-1:1),'%4.0f')); rmeddis@38: ylabel('Best Frequency of Filter (Hz)'); rmeddis@38: xlabel('Stimulus Time (ms)'); rmeddis@38: set(gca,'YLim',[-(size(data_matrix,1))*verticalshift verticalshift*1.5]); rmeddis@38: box on; rmeddis@38: hold off;