【问题标题】:how to do this Python interpolation in MATLAB?如何在 MATLAB 中做这个 Python 插值?
【发布时间】:2018-11-01 03:52:26
【问题描述】:

我需要在 MATLAB 中转换这段 Python 代码,但我似乎不知道该怎么做。

python loop

T = 1968,
F = 1025,
used_freq = 22050,
freqs = 1621 x 1 vector,
log_scale_spec = 1968 x 1025 matrix,
cent_spec was initialized with zeros = 1968 x 1621 matrix,
and the "linspace(0, used_freq, F)" operation gives a 1025 x 1 vector

插值似乎是三次方 (k = 3)。

我只是不知道如何在 MATLAB 中将所有这些构建为一个 for 循环。 到目前为止,我尝试过这样的事情:

matlab loop

f代表操作“linspace(0, used_freq, F)'” 注意在 Matlab 中,它必须用 ' 转置。

我正在尝试让它在 Matlab 中工作,我不确定如何做到这一点,可能在循环中缺少一些索引,或者可能需要转置一些向量/矩阵或这些的组合。

【问题讨论】:

  • 请不要发布您的代码图片。将代码复制粘贴到编辑框中。图片并非所有人都可以访问,也无法搜索。

标签: python matlab matrix vector interpolation


【解决方案1】:
T = 1968,
F = 1025,
used_freq = 22050,

下面一行是错误的陈述。 freqs 的高维必须小于 F。我可以补充一点,freqs 必须包含索引,而不是频率。

freqs = 1621 x 1 vector - wrong
freqs = F< x 1 vector - right
log_scale_spec = T x F matrix,

您可以删除下面的行,因为_cent_spec_ evals 在循环之外

cent_spec=zeros(T,F<)
f=linspace(0, used_freq, F);

for t=1:T
    Sp(:,t)=interp1(f,log_scale_spec(:,t),'cubic');
end
cent_spec=Sp(:,freqs);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    相关资源
    最近更新 更多