我的频率范围为
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
这应该可以正常工作。
然而,输出向量是:
任何可能出错的想法?为什么在第5个条目中出现额外的0.0001?
答案 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)