【问题标题】:Dividing equally a vector matlab等分向量matlab
【发布时间】:2015-03-28 15:37:56
【问题描述】:

在 MFCC 中,我指定了 f_lowf_high,它们是我的最小和最大频率频段,我将计算这两个频率值之间的 N 个等距的 mel 值。所以我写了

f_low=1000;  
f_high=fs/2;
filt_num=26;  % number of filters
stp=round(f_high/filt_num); % step 
f=f_low:stp:f_high; % my frequency vector

但我不能平分我的f 向量,也许 matlab 中有一个函数可以做到这一点,或者我错过了什么?请提前帮助和感谢。

【问题讨论】:

  • 平分是什么意思?你想要一个子向量中的前半部分条目和另一个子向量中的后半部分吗?还是需要订购?
  • 或者对于 ex fs=20,000 那么 f_high=10,000 因此 stp = 10k/26=385, f 给你的值是 1000 1385 1770 2155 2540 2925 3310 等等直到 9855?你期待什么?
  • 我需要创建一个包含 26 个元素的新向量,它们之间的距离相等,从 f_low 开始,到 f_high 结束

标签: matlab


【解决方案1】:

稍微挖掘一下让我相信你想要一个带有filt_num 条目的线性间隔向量,从f_low 开始,到f_high 结束。您应该使用linspace,如下所示:

f = linspace(f_low,f_high,filt_num);

这与您的最后两行代码基本相同。请记住,您的代码仅在 f_high 大于 f_low 时才有效。 linspace 没有这个问题,因为它也支持降序向量。

【讨论】:

    猜你喜欢
    • 2020-01-04
    • 2015-07-03
    • 1970-01-01
    • 2017-11-17
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 2014-09-06
    相关资源
    最近更新 更多