matlab 小数取余 rem 和 mod有 bug

目录

  • 前言
  • Matlab取余函数
    • [1 mod 函数](#1 mod 函数)
      • [1.1 命令行输入](#1.1 命令行输入)
      • [1.2 命令行输出](#1.2 命令行输出)
    • [2 rem 函数](#2 rem 函数)
      • [2.1 命令行输入](#2.1 命令行输入)
      • [2.2 命令行输出](#2.2 命令行输出)
  • 分析原因
  • 注意

前言

在 Matlab 代码中mod(0.11, 0.1) < 0.01 判断为真,mod(1.11, 0.1) < 0.01判断为假,导致出现意料外的结果。

结果发现被除数小于1的话会出现这些结果,被除数是大于1的小数不会。猜测应该是数据保存的精度问题。

知乎的回答解释

Matlab取余函数

1 mod 函数

matlab 文档------mod除后的余数(取模运算)

1.1 命令行输入

matlab 复制代码
t=0; for i =0:50, t=t+0.01; if mod(t,0.1) <0.01; fprintf('t的值:%.3f\n',t),end,end;

1.2 命令行输出

会出现不想要的值 0.110

2 rem 函数

matlab 文档------rem 除后的余数

2.1 命令行输入

matlab 复制代码
t=0; for i =0:50, t=t+0.01; if rem(t,0.1) <0.01; fprintf('t的值:%.3f\n',t),end,end;

2.2 命令行输出

会出现不想要的值 0.110

分析原因

mod 和 rem 函数得到的 0.0100 和 0.01 比较出错,返回的是真。


注意

  1. Matlab 代码中不加分号会默认再命令行窗口打印该变量结果

  2. mod 函数生成一个为零或与除数 具有相同符号的结果。

    rem 函数生成一个为零或与被除数具有相同符号的结果。

相关推荐
REDcker5 小时前
Android HWASan 详解:硬件标记原理、Clang 启用与排障实践
android·linux·debug·编译·clang·asan·hwasan
yongui478345 小时前
基于 GA 优化的 BP 神经网络算法分析与 MATLAB 实现
神经网络·算法·matlab
rit84324996 小时前
基于 MATLAB 的坐标变换程序
开发语言·matlab
listhi5206 小时前
LTE标准下Turbo码编译码仿真
算法·matlab
fie88897 小时前
城市环境下车辆目标跟踪算法 MATLAB 实现
算法·matlab·目标跟踪
机器学习之心7 小时前
轴承剩余寿命预测 | 基于BP神经网络的轴承剩余寿命预测MATLAB实现!
人工智能·神经网络·matlab·轴承剩余寿命预测
Evand J9 小时前
【无人机编队控制程序4】复杂障碍环境下多无人机编队避障(人工势场法APF)与协同控制,MATLAB仿真例程
开发语言·matlab·无人机·控制·apf·避障
南宫萧幕10 小时前
基于 MATLAB 的插电混动汽车 CD-CS 策略 WLTC 前向仿真实现
开发语言·matlab·汽车
yugi98783811 小时前
主动噪声控制中的 FXLMS 算法研究与 MATLAB 实现
开发语言·算法·matlab
kaikaile199513 小时前
基于 MATLAB 的3D 蒙特卡洛光子传输模拟
开发语言·matlab·3d