Use fzero but I have arrays
6 views (last 30 days)
Show older comments
Anastasia Zistatsis
on 24 Mar 2021
Commented: Anastasia Zistatsis
on 24 Mar 2021
I need to use fzero() to determine when the liquid stops flowing @ Q = 0. I know I need to create an equation or loop of some sort to use fzero, but I can't figure it out.
Here's my data:
t = [0,500,1000,1500,2200,2900,3600,4300,5200,6500,7000,7500];
Q = [10.55,9.576,9.072,8.640,8.100,7.560,7.020,6.480,5.688,4.752,3.348,1.404];
A hint would be incredibly helpful.
1 Comment
Jan
on 24 Mar 2021
This is not a smooth curve. It will be more or less arbitrary, which function you will fit to the data. A linear interpolation of the 3 smallest values might be smart enough.
Accepted Answer
Star Strider
on 24 Mar 2021
Edited: Star Strider
on 24 Mar 2021
t = [0,500,1000,1500,2200,2900,3600,4300,5200,6500,7000,7500];
Q = [10.55,9.576,9.072,8.640,8.100,7.560,7.020,6.480,5.688,4.752,3.348,1.404];
Q0T = interp1(Q, t, 0, 'pchip','extrap')
figure
plot(t, Q)
hold on
plot(Q0T, 0, 'xr')
hold off
grid
xlabel('t')
ylabel('Q')
legend('Data','Q_0')
text(Q0T, 0, sprintf('Flow stops at %.2f\n \\downarrow', Q0T), 'horiz','right','vert','bottom')
EDIT — (24 Mar 2021 at 21:04)
Added plot figure —
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/561683/image.png)
.
2 Comments
More Answers (1)
Jan
on 24 Mar 2021
Edited: Jan
on 24 Mar 2021
This is not a smooth curve. It will be more or less arbitrary, which function you will fit to the data. A linear interpolation of the 3 rightmost values might be smart enough:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/561678/image.png)
a = polyfit(t(end-2:end), Q(end-2:end), 1)
x0 = -a(2) / a(1) % 7946.2
0 Comments
See Also
Categories
Find more on Interpolation 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!