MATLAB中文论坛

标题: 运算结果不符 [打印本页]

作者: zuishangmoruo    时间: 2017-7-30 15:46
标题: 运算结果不符
function []=cccccccc()
pp=0.8;
a=[1 2 3 4 5 6 7 8 9 0];
b=a(:,1:1:length(a)*(1-pp));
b


%%运算结果:
b =

     1



请问为什么b的结果不是b=[1 2]?如果要想得到此结果,如何修改?


作者: 深蓝孩童    时间: 2017-7-30 16:59
  1. 2-length(a)*(1-pp)
  2. ans =
  3.      4.440892098500626e-16
复制代码
由于浮点数误差的原因会得到这个结果,所以你的索引只是第一个,运行的时候有这个警告:Warning: Integer operands are required for colon operator when used as index

这样就OK了:
  1. pp=0.8;
  2. a=[1 2 3 4 5 6 7 8 9 0];
  3. b=a(1:round(length(a)*(1-pp)));
  4. b
复制代码

作者: zuishangmoruo    时间: 2017-7-30 18:53
深蓝孩童 发表于 2017-7-30 16:59
由于浮点数误差的原因会得到这个结果,所以你的索引只是第一个,运行的时候有这个警告:Warning: Integer o ...

谢谢,另外我在命令窗口直接输入代码,却能得到b=【1 2】,难道在命令窗口里面数值类型会有所差异?
作者: 深蓝孩童    时间: 2017-7-30 19:09
zuishangmoruo 发表于 2017-7-30 18:53
谢谢,另外我在命令窗口直接输入代码,却能得到b=【1 2】,难道在命令窗口里面数值类型会有所差异? ...

不可能,你把你运行的截图贴出来看看。




欢迎光临 MATLAB中文论坛 (https://www.ilovematlab.cn/) Powered by Discuz! X3.4