x1 = [2 3 10 30]
[x1,PS] = mapminmax(x1)
a1=mapminmax('reverse',x1(1),PS)*mapminmax('reverse',x1(3),PS)
a1計算出來答案是20
a2=mapminmax('reverse',x1(3)*x1(1),PS)
a2計算出來答案是22
想知道為何a2反推之後會等22 而不是20
是規一化後的數值無法用於加減乘除計算上嗎
還是因為電腦在運算中有進行一些捨位以至於結果會有偏差

 Respuesta aceptada

fexomp
fexomp el 17 de Nov. de 2022

0 votos

是的,是由于你的数据:[2 3 10 30]并非线性关系,造成计算误差的
你如果程序如下:
x1 = [2 6 4 10]; %线性数据
[x1,PS] = mapminmax(x1);
a1=mapminmax('reverse',x1(1),PS)*mapminmax('reverse',x1(3),PS)
a2=mapminmax('reverse',x1(3)*x1(1),PS)
结果:a1和a2都是8,就不存在误差。
希望对你有所帮助,谢谢!

Más respuestas (0)

Categorías

Etiquetas

Preguntada:

el 17 de Nov. de 2022

Respondida:

el 17 de Nov. de 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!