0

我有这些随机高斯变量 A 和 B 来表示电压。我也有分别与电压 RA 和 RB 串联的电阻。我想在 RA 和 RB 之间进行电压测量,并且我想测量从 A 到 B 的电流。我已经实现了,

I = (A-B)/(RA+RB);
U = I*RA-A;

假设 RA 的值很高,RH,但我想使用消除过程来找出。我已经实施,

A_calc = U+I*RL; %guess the low value first

现在我想检查计算是否匹配。

if A_calc==A
    disp('RA=RL');
else
    disp('RA=RH');
end

现在的问题是,A_calc 永远不会等于 A。总是存在偏差,无论我将电阻值设置为多少。

可能是什么错误?是不是决议丢失了?我以为 MATLAB 是 16 位分辨率的?

4

1 回答 1

2

我需要整个代码来找出您的问题所在 - 但总的来说,在此类计算中发现数值不准确是很常见的。您几乎总是定义某种差异阈值,在它之下变量被认为是相等的。请用:

function eq = isalmostequal(a,b,tol)
if ~exist('tol','var'); 
   tol = 1e-9;
end

eq = (abs(a - b) < tol)
end

叫它:

if isalmostequal(A,A_calc)
   disp('RA=RL');
else
   disp('RA=RH');
end
于 2019-12-14T13:12:34.650 回答