binedges = 0 : 0.1 : 1;
[~, ~, binnumber] = histcounts( StimulusVector, binedges );
maxbin = max(binnumber);
count0 = accumarray(binnumber, Response == '0', [1 maxbin]);
count1 = accumarray(binnumber, Response == '1', [1 maxbin]);
total_for_bins = count0 + count1;
percent_per_bin = count1 ./ max(1,total_for_bins) * 100;
If you only need the percentages and not the counts, you can make this a bit shorter:
binedges = 0 : 0.1 : 1;
[~, ~, binnumber] = histcounts( StimulusVector, binedges );
percent_per_bin = accumarray(binnumber, Response == '1', [], @mean) * 100;
To fit a curve:
x = (binedges(1:end-1) + binedges(2:end))/2;
y = percent_per_bin;
and now you can fit your curve on x and y using whatever distribution seems suitable. You might want to look inside histfit() to see how it does the fitting and plotting.
Best Answer