在我执行计算时 MATLAB 给我偏差是否有原因?
Is there a reason MATLAB is giving me deviations as I perform the calculations?
我有这些随机高斯变量 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位分辨率的?
我需要整个代码来找出您的问题所在 - 但一般来说,在此类计算中发现数值不准确是很常见的。你几乎总是定义某种差异阈值,在它之下变量被认为是相等的。
请使用:
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
我有这些随机高斯变量 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位分辨率的?
我需要整个代码来找出您的问题所在 - 但一般来说,在此类计算中发现数值不准确是很常见的。你几乎总是定义某种差异阈值,在它之下变量被认为是相等的。 请使用:
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