Effacer les filtres
Effacer les filtres

Find the linear Equation at different conditions - Machine Learning

3 vues (au cours des 30 derniers jours)
Yutao Wang
Yutao Wang le 23 Juin 2021
Modifié(e) : Ayush le 30 Mai 2024
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

Réponses (1)

Ayush
Ayush le 30 Mai 2024
Modifié(e) : Ayush le 30 Mai 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:
  1. Store the given data in MATLAB arrays.
  2. Interpolate to find the slope and intercept at the desired flow rate.
  3. Generate the linear equation based on the interpolated slope and intercept.
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));
Equation for 6.45 std L/min (Interpolated): y = -0.0004x + -0.0000
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:

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by