目录

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

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
可编程芯片开发6 小时前
基于时空相关性的风电功率预测模型matlab建模与仿真
matlab·时空相关性·风电功率预测模型
weixin_4284984913 小时前
使用MATIO库读取Matlab结构体(struct)数据的示例程序
matlab
阿昆的科研日常16 小时前
Matlab进阶绘图第74期-带填充纹理的单组柱状图
开发语言·matlab·可视化·论文插图
tianyukun022319 小时前
MATLAB学习笔记(二) 控制工程会用到的
笔记·学习·matlab
IT猿手1 天前
基于CNN-BiLSTM的深度Q网络(Deep Q-Network,DQN)求解移动机器人路径规划,MATLAB代码
网络·matlab·cnn
机器学习之心1 天前
多输入多输出 | Matlab实现BO-GRU贝叶斯优化门控循环单元多输入多输出预测
matlab·bo-gru·贝叶斯优化门控循环单元·多输入多输出预测
硬件大脑1 天前
MATLAB如何打印一个桃心形状
matlab
十七算法实验室2 天前
Matlab实现鼠群优化算法优化随机森林算法模型 (ROS-RF)(附源码)
开发语言·算法·决策树·随机森林·机器学习·支持向量机·matlab
软件算法开发3 天前
基于SIMP算法的材料结构拓扑优化matlab仿真
matlab·simp算法·材料结构·拓扑优化
机器学习之心3 天前
TCN-LSTM时间卷积长短期记忆神经网络多变量时间序列预测(Matlab完整源码和数据)
神经网络·matlab·lstm·多变量时间序列预测·tcn-lstm·时间卷积长短期记忆神经网络