substitute for discretize command

Asked by pavan sunder

pavan sunder (view profile)

on 18 Nov 2016
Latest activity Commented on by johnson saldanha

johnson saldanha (view profile)

on 6 Nov 2018
discretize function was available in new version of matlab..but i have older version (R2014b)in my desktop. i cannot install new version into my desktop..please help my with an alternative function for discretize in matlab

Tags

Answer by Walter Roberson

Walter Roberson (view profile)

on 18 Nov 2016

For equal intervals, separated by delta:
discrete_x = floor( (x - minimum_allowed_x) ./ delta ) .* delta + minimum_allowed_x;
For unequal intervals in which the left edges are given by the vector edges and the last entry of edges is the upper bound:
[~, ~, bin] = histcounts( x, edges );
discrete_x = edges(bin);

Iason Grigoratos

Iason Grigoratos (view profile)

on 20 Dec 2016
it does not work properly, example:
x = [1 1 2 3 6 5 8 10 4 4];
edges = 2:2:10;
[~, bin] = histc( data, edges );
discrete_x = edges(bin);
% bin takes the value of "5" when data value is "10", while the bins are 4 (N border values, N-1 bins)
-- can i just do "bin(bin>=length(edges))=length(edges)-1" ?
Also if x is outside the edges then edges(bin) returns an error, so your x must always be within the range of bins.
Walter Roberson

Walter Roberson (view profile)

on 20 Dec 2016
[~, discrete_x] = histc(x, edges);
discrete_x(discrete_x == length(edges)) = length(edges)-1;
discrete_x(discrete_x == 0) = NaN;
johnson saldanha

johnson saldanha (view profile)

on 6 Nov 2018
may i know how can i be able to get the 2nd column from the x matrix in discrete_x