在我进行计算时,MATLAB给我偏差有什么原因吗?

在我进行计算时,MATLAB给我偏差有什么原因吗?,matlab,precision,resolution,deviation,Matlab,Precision,Resolution,Deviation,我用这些随机高斯变量A和B来表示电压。我也有和电压串联的电阻,分别是RA和RB。我想测量RA和RB之间的电压,我想测量A到B之间的电流。我已经实现了 I = (A-B)/(RA+RB); U = I*RA-A; A_calc = U+I*RL; %guess the low value first 假设RA的值很高,RH,但我想用消去法来找出。我实施了, I = (A-B)/(RA+RB); U = I*RA-A; A_calc = U+I*RL; %guess the low value

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

I = (A-B)/(RA+RB);
U = I*RA-A;
A_calc = U+I*RL; %guess the low value first
假设RA的值很高,RH,但我想用消去法来找出。我实施了,

I = (A-B)/(RA+RB);
U = I*RA-A;
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

我需要完整的代码来找出你的问题所在——但一般来说,在这样的计算中发现数值不准确是很常见的。您几乎总是定义某种差异阈值,在此阈值下变量被视为相等。 请使用:

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

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

您应该使用
nargin
检查输入是否正确exists@max-我认为这是一个意见问题。上述方法允许您编辑函数,添加更多输入,而不受参数数量的限制。但是,它的效率稍低。您应该使用
nargin
检查输入是否正确exists@max-我认为这是一个意见问题。上述方法允许您编辑函数,添加更多输入,而不受参数数量的限制。但是,它的效率稍低。不,MATLAB不使用16位,而是使用64位浮点值。阅读此处了解更多信息:不,MATLAB不使用16位,它使用64位,但使用浮点值。请阅读此处了解更多信息: