Random exponential function between two values
5 views (last 30 days)
Show older comments
Hello everyone! I’m trying to create a random vector with a maximum value of xmax_out = 65 and a minimum value of xmin_out = 16. This vector. However, I would like this vector to have an exponential shape, as shown, because I want to simulate the temperature that decreases in contact with a hot fluid to be cooled.
As you can see: I would like the temperature at time 0 (therefore origin of the x axis) to be equal xmax_out while at time t the temperature reaches the xmin_out value. In the project the cooling time is about 50 min.
I tried to use the following code to generate a decreasing random vector, but unfortunately it is linear.
% Temperature range
n = 50; % Length of time [min]
xmin_out = 16 + 273.15; % Minimum outlet temperature [K]
xmax_out = 65 + 273.15; % Maximum outlet temperature [K]
% Random Vector of temperature:
T_out = sort((xmax_out-xmin_out)*rand(n,1)+xmin_out, "descend");
Thanks!
0 Comments
Accepted Answer
Sam Chak
on 18 May 2022
Edited: Sam Chak
on 18 May 2022
Are you looking for an exponential decay like this?
t = linspace(0, 3000, 30001);
tmin = 50;
xmin = 16;
xmax = 65;
k = -log(xmin/65)/(60*tmin);
T = xmax*exp(-k*t);
plot(t/60, T, 'linewidth', 1.5)
grid on
xlabel('Time, t [min]')
ylabel('Temperature, T')
6 Comments
Sam Chak
on 18 May 2022
Since the absolute Kelvin is just an additive reference, you can do this way:
t = linspace(0, 36000); % 3000 seconds == 50 min; plot up to 600 min
tmin = 50;
xmin = 20; % Temperature [Kelvin]
xmax = 45; % Temperature [Kelvin]
k = -log((xmin)/(xmax))/(60*tmin);
Temp = (xmax)*exp(-k*t) + 273.15;
plot(t/60, Temp, 'linewidth', 1.5)
grid on
xlabel('Time, t [min]')
ylabel('Temperature, T [K]')
It actually behaves exponentially. Just that the 50 min duration is relatively short to see the effect.
More Answers (0)
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!