MATLAB max function returns wrong index when finding peak voltage difference

Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
1 reply · 3K views
babayevdavid
Messages
17
Reaction score
0
Hi,

For some reason, when I run this MATLAB code, I'm getting what looks like about 10,000 for Rf for the largest Vo on the graph, but MATLAB is giving me Rf at (Vo)max as 100,001

Any ideas?

clc;
clear;
close all;

syms Rf

Rf = 0:0.1:100000;

VRt25 = 18.*(10000)./(10000 + Rf);
VRf25 = 18.*(Rf)./(10000 + Rf);

VRt2505 = 18.*(9977.81)./(9977.81 + Rf);
VRf2505 = 18.*(Rf)./(9977.81 + Rf);

V_difference25 = abs(VRt25 - VRf25);

V_difference2505 = abs(VRt2505 - VRf2505);

Vo_difference = abs(V_difference25 - V_difference2505);

figure;
plot(Rf,Vo_difference)
title('Voltage Difference Vo vs. Rf')
ylabel('Vo Difference [V]')
xlabel('Rf [ohms]')
hold on

%Maximum Vo Difference
[Vo_difference_max,Rf] = max(Vo_difference)
 
Physics news on Phys.org
There is no issue here.

Rf has 1,000,001 elements, as does Vo_difference.

The maximum of Vo_difference is 0.02, occurring at index 100,001. This means Vo_difference(100001) = 0.02.

The part you missed is that Rf(100001) = 10000 as expected. That is, the Rf you printed with max() gives you an index _into_ the original Rf, not a direct value of Rf.