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 函数生成一个为零或与被除数具有相同符号的结果。

相关推荐
我找到地球的支点啦11 小时前
Matlab系列(009) 一CRC循环冗余校验详解
开发语言·数据结构·算法·matlab·信息与通信
吃好睡好便好4 天前
查找函数的使用
学习·算法·matlab·生活·查找函数
chhttty4 天前
Design Verifier检查:整型数溢出检查与修复
matlab·simulink
吃好睡好便好4 天前
判断函数的使用
学习·算法·matlab·生活·判断函数
hu9245195594 天前
Matlab保护源代码—P文件和exe文件详细解析
开发语言·matlab
史上最甜的躯4 天前
控制系统——基础、导论;以直流电机控制系统为例详解微分方程模型、拉普拉斯变换、传递函数模型的理论、推导及仿真
matlab·simulink·传递函数·控制系统·拉普拉斯·电机模型
lingchen19065 天前
用MATLAB r2010b和r2016b求解微分方程组
开发语言·算法·matlab
可编程芯片开发5 天前
基于李雅普诺夫算法的四旋翼无人机姿态跟踪控制系统simulink建模与仿真
matlab·无人机·制造·四旋翼无人机·李雅普诺夫·姿态跟踪控制
matlab代码6 天前
基于matlab的玉米种子计数设计(GUI界面)【源码58期】
开发语言·matlab
吃好睡好便好7 天前
转换函数的使用
学习·matlab·生活·转换函数