# Create new variable with only values of a certain variable

1 view (last 30 days)
Mary Hemler on 1 Jun 2020
Edited: Tommy on 1 Jun 2020
I want to save a new variable 'highMI_sec' as only the values of mutualInfoTotal that are at least equal to 5 (at end of code). How can I do this?
for i = 1:n_cells
spikes = cellspikes{i}; % access cellspikes
spikes = spikes./1000; % ms to secs
spikes = spikes(spikes>startTime&spikes<stopTime);
edgesT = linspace(startTime,stopTime,numel(trackingtimes)+1);
binnedSpikes = histcounts(spikes,edgesT);% sorts spikes into bins
% also bin headangle data
n_bins_angle = 60;
for iBin = 1:n_bins_angle
spikesPerAngle(iBin) = sum(binnedSpikes(angle_inds == iBin));
end
SPA(1,i)={spikesPerAngle};
% compute average firing rate for each HD angle
firing_rate = spikesPerAngle./(occupancy.*deltaT); %this vector is a TUNING CURVE!
FR(1,i) = {firing_rate};
% now compute individual pieces needed to compute mutual info
probability_density = occupancy./sum(occupancy); %proportion of time spent at each HD angle per total occupancy at all angles
PD(1,i)={probability_density};
% compute average firing rate across all HD angles
mean_rate = numel(spikes)./(stopTime-startTime);
MR(1,i) = mean_rate;
% compute mutual info between firing rate and HD
mutualInfo = sum(firing_rate .* log2(firing_rate./mean_rate) .* probability_density,'omitnan');
MIperspike = mutualInfo./(mean_rate);
%store mutual info for each cell into a matrix
mutualInfoTotal(1,i) = mutualInfo; %in bits per second
MISpikeTotal(1,i) = MIperspike;
end

Tommy on 1 Jun 2020
Try this:
idx = mutualInfoTotal >= 5; % indices of values at least equal to 5
mutualInfoTotal = mutualInfoTotal(idx);
##### 2 CommentsShowHide 1 older comment
Tommy on 1 Jun 2020
Edited: Tommy on 1 Jun 2020
Happy to help!
True, that was poor wording on my part. You could use
idx = find(mutualInfoTotal >= 5);