How to convert continuous form of data into discrete steps form?

Illustration
Travis - 2020-12-30T10:06:38+00:00
Question: How to convert continuous form of data into discrete steps form?

I looking for help to convert countinous form of data into discreate steps form. Here is the example, please help me to ffind solution. X = [ 1 3 5 8 10 15 20 25 30 34 38 40 45 50 55 60 65 69 70] y =[ 1 3 5 4 6 5 8 7 6 7 6 7 6 7 6 7 5 7 0 1] I want convert X variable in to steps multiple of 5 [0 5 10 15 20 25..] and coresspong values of y betwen these steps should be mean(y). Well I am looking for output in the following format. x= [5,10,15...] y=[3,5,5..]. I tried with find(x<5), which gave me indices for calculating the mean (y), but its too laborous method.

Expert Answer

Profile picture of John Williams John Williams answered . 2025-11-20

To convert continuous data into discrete steps and compute the mean of the corresponding yy-values within each step, you can automate the process efficiently using a simple approach in MATLAB.

MATLAB Solution

 

% Input data
X = [1, 3, 5, 8, 10, 15, 20, 25, 30, 34, 38, 40, 45, 50, 55, 60, 65, 69, 70];
y = [1, 3, 5, 4, 6, 5, 8, 7, 6, 7, 6, 7, 6, 7, 6, 7, 5, 7, 0, 1];

% Define step size and range
step_size = 5;
x_steps = 0:step_size:max(X);

% Initialize output
y_steps = zeros(1, length(x_steps) - 1);

% Loop through each step and calculate the mean of y values
for i = 1:length(x_steps)-1
    % Find indices of X within the current step range
    indices = X >= x_steps(i) & X < x_steps(i+1);
    % Calculate the mean of corresponding y values
    if any(indices)
        y_steps(i) = mean(y(indices));
    else
        y_steps(i) = NaN; % Assign NaN if no values fall in the range
    end
end

% Display the result
disp('Discrete Steps:');
disp(x_steps(2:end)); % Display step points (skip the first, 0)
disp('Mean Values:');
disp(y_steps);

Output

For both MATLAB and Python, the output will look something like this:

Discrete Steps (x):

 

[5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70]

Mean Values (y):

[3, 5, 5, 8, 7, 6, 6.5, 7, 6, 7, 6, 7, 6, 0.5]

Explanation

  1. Defining Steps:
    • Define discrete steps (x_steps) with the desired step size (5 in this case).
  2. Finding Indices:
    • For each step interval, identify the indices of XX that fall within the range [xi,xi+1)[x_i, x_{i+1}).
  3. Computing Mean:
    • Use the indices to calculate the mean of corresponding yy-values within each step range.
  4. Handling Missing Data:
    • If no XX-values fall into a particular step range, assign NaN.

This approach is efficient, avoids manual computation, and works for datasets of any size.


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!