【问题标题】:How to divide a vector into frames in MATLAB?如何在MATLAB中将向量划分为帧?
【发布时间】:2012-04-19 01:37:01
【问题描述】:

我正在使用 MATLAB 构建语音变形系统,我需要将源和目标、训练和测试样本划分为 128 个样本的帧,以便我可以在每个帧上应用 DWT。 那么请指导我如何将矢量划分为帧?

【问题讨论】:

    标签: matlab


    【解决方案1】:

    您可以使用reshape 函数将向量更改为由相同大小的列/行(即帧)组成的矩阵:

    x = rand(128 * 100, 1);
    X = reshape(x, 128, 100);
    % X is a 128-by-100 matrix; the i-th column of 128 elements 
    % is addressed by X(:,i)
    

    【讨论】:

    • 我的测试和训练样本的形式是向量而不是矩阵(x 是一维矩阵)...
    • 没错。以上将把一个向量重塑成一个具有指定长度列的矩阵。
    【解决方案2】:

    如果您有可用的信号处理工具箱,则使用 reshape 的替代方法是使用缓冲区。简单地 。 . .

    y = buffer(x,128)
    

    .. 在你的例子中。如果原始信号 (x) 中的元素数不是 128 的整数倍,buffer 命令还会在最后一帧添加尾随零。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-03
      • 1970-01-01
      • 1970-01-01
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      • 2021-07-07
      • 2011-12-16
      相关资源
      最近更新 更多