- Store the given data in MATLAB arrays.
- Interpolate to find the slope and intercept at the desired flow rate.
- Generate the linear equation based on the interpolated slope and intercept.
Find the linear Equation at different conditions - Machine Learning
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
I have a table of data that looks like this:
All data in the image are given here:
At different flowrate, there is a unique linear equation. What I want is to input the flowrate (for example, at 6.45 standard L/min), and get a linear equation at this flowrate.
Which maths/machine learning tool should I use, please? Thanks in advance
0 comentarios
Respuestas (1)
Ayush
el 30 de Mayo de 2024
Editada: Ayush
el 30 de Mayo de 2024
Hi,
To generate a linear equation for a specific flow rate using the given data table, you can interpolate between the known flow rates to find the slope and intercept for the desired flow rate. Then, you can use these values to form the linear equation. Refer to the below steps for better understanding:
I wrote an example implementation for better understanding, given below:
% Given data
relativeHumidity = [0, 20, 40, 60, 80, 100]; % Relative humidity in percent
flowRates = [20, 2, 0.5, 0.2]; % Given flow rates in std L/min
corrections = [0, 0, 0, 0;
-0.0075, -0.0085, -0.0095, -0.0105;
-0.015, -0.017, -0.019, -0.021;
-0.0225, -0.0255, -0.0285, -0.0315;
-0.03, -0.034, -0.038, -0.042;
-0.0375, -0.0425, -0.0475, -0.0525]; % Corrections at different humidities and flow rates
% Desired flow rate
desiredFlowRate = 6.45;
% Interpolate to find corrections at the desired flow rate
interpolatedCorrections = interp1(flowRates, corrections', desiredFlowRate, 'linear', 'extrap');
% Plot settings
hold on;
grid on;
xlabel('Relative Humidity (%)');
ylabel('Correction Factor');
title('Correction Factor vs. Relative Humidity for Various Flow Rates');
% Plot the original data points and lines for each flow rate
colors = ['b', 'g', 'r', 'c']; % Colors for the lines
for i = 1:length(flowRates)
plot(relativeHumidity, corrections(:, i), 'o', 'MarkerEdgeColor', colors(i));
% Fit and plot line for each flow rate
p = polyfit(relativeHumidity, corrections(:, i), 1);
f = polyval(p, relativeHumidity);
plot(relativeHumidity, f, 'Color', colors(i), 'DisplayName', sprintf('%.2f std L/min', flowRates(i)));
end
% Fit and plot line for the interpolated flow rate
pInterpolated = polyfit(relativeHumidity, interpolatedCorrections, 1);
fInterpolated = polyval(pInterpolated, relativeHumidity);
plot(relativeHumidity, fInterpolated, 'k--', 'LineWidth', 2, 'DisplayName', sprintf('%.2f std L/min (Interpolated)', desiredFlowRate));
% Print the equation for the interpolated flow rate
fprintf('Equation for %.2f std L/min (Interpolated): y = %.4fx + %.4f\n', desiredFlowRate, pInterpolated(1), pInterpolated(2));
legend('show', 'Location', 'southwest');
hold off;
For interpolation, I have made use of the interp1 function; for more information on this function, you can refer to the below documentation:
0 comentarios
Ver también
Categorías
Más información sobre Statistics and Machine Learning Toolbox en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!