Help with MATLAB code; discrepancy between graph max and Matlab's max

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
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.