如何创建具有指定间距

时间:2017-01-18 09:24:56

标签: matlab

我的频率范围为

min(frequency) = 1.07 e+10
max(frequency) = 1.275 e+10
max(frequency) - min(frequency) = 2.05 e+09

我想在最小和最大频率之间创建一个间距为0.001 e + 10的向量:

linspace(min(frequency),max(frequency),205)

因为2.05 e+09 / 205 = 0.001 e+10这应该可以正常工作。

然而,输出向量是:

  • 1.07 e + 10
  • 1.071 e + 10
  • 1.072 e + 10 ...
  • 1.08 e + 10
  • 1.0811 e + 10
  • 1.0821 e + 10

任何可能出错的想法?为什么在第5个条目中出现额外的0.0001?

2 个答案:

答案 0 :(得分:1)

<强>解决方案: 所以解决方案非常简单。您需要在要生成的值的数量上添加一个。这应该给你正确的解决方案

linspace(min(frequency),max(frequency),206)

<强>解释 除了第一个值之外,每个值都有额外的0.0001。它只显示在第4个位置,因为对于之前的值,由于舍入而没有显示。

以下面的例子为例: 您希望值介于0和1之间,间距为0.01。 所以你的方式如下:

max_value - min_value = 1 - 0 = 1

然后你将1除以0.1得到10。 所以,如果你通过以下方式调用linspace:

linspace(0,1,10) =  
0    
0.1111    
0.2222    
0.3333    
0.4444    
0.5556    
0.6667    
0.7778    
0.8889
1.0000

但你想要执行的是:

linspace(0,1,10 + 1)

这导致值0, 0.1, 0.2 , ...

问题是MATLAB想要知道它生成的值的数量,并且包括第一个最后一个值。

答案 1 :(得分:1)

一般情况下,如果您知道自己喜欢的间距,那么只需使用colon的三输入版本来执行此操作就可以了形式为:start : spacing : end

min(frequency) : 0.001e+10 : max(frequency)