Use fzero but I have arrays
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Anastasia Zistatsis
am 24 Mär. 2021
Kommentiert: Anastasia Zistatsis
am 24 Mär. 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 Kommentar
Jan
am 24 Mär. 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.
Akzeptierte Antwort
Star Strider
am 24 Mär. 2021
Bearbeitet: Star Strider
am 24 Mär. 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 Kommentare
Weitere Antworten (1)
Jan
am 24 Mär. 2021
Bearbeitet: Jan
am 24 Mär. 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 Kommentare
Siehe auch
Kategorien
Mehr zu Interpolation finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!