matlab enframe函数 C++实现

Matlab在语音处理中用到了enframe对语音信号进行分帧处理。

我在网上查看了一下enframe的一些相关信息:

y=enframe(x,framelength,step);

x为信号向量,可以为航向量或者列向量,

framelength是每一帧的长度,

step 是指一帧与一帧之间移动的样点数,有的称为非重叠的长度,

分得的帧数是:nf = fix((nx-framelength+step)/step),

其中nx 是x的长度,y是framelength*nf的数组或者nf*framelength的数组,其取决于x是行向量还是列向量。

//C++实现enframe分帧函数//输入://float* x:信号源(行向量)//int framelength:每一帧的长度//int step:一帧与一帧之间移动的样点数,有的称为非重叠的长度////输出://一个帧数*每一帧长度的二维数组

static float** enframe(const float x[], int srclength, int framelength, int step)
{

    int nf = floor((srclength - framelength + step) / step);//算出帧数
    float** yenframe;//用来存放结果
    yenframe = new float *[nf];
    for (int i = 0; i < nf; i++)
    {
        yenframe[i] = new float[framelength];
    }
    int count = 0;
    int startNo = 0;
    while (count < nf)
    {
        for (int i = 0; i < framelength; i++)
        {
            yenframe[count][i] = x[startNo + i];
        }
        count++;
        startNo += step;
    }

    return yenframe;
}
时间: 2024-10-13 01:22:06

matlab enframe函数 C++实现的相关文章

matlab reshape函数

语法 (1)B = reshape(A,m,n) 用法: B=reshape(A,m,n) 返回m*n矩阵B,它的元素是获得A的行宽度.如果A没有m*n元素,得到一个错误结果. 例子: <span style="font-size:18px;">>> A=rand(1,10)</span> 结果: <span style="font-size:18px;">A = Columns 1 through 8 0.1622

Matlab中函数定义方法

Matlab自定义函数的六种方法 n1.函数文件+调用函数(命令)文件:需单独定义一个自定义函数的M文件: n2.函数文件+子函数:定义一个具有多个自定义函数的M文件: n3.Inline:无需M文件,直接定义: n4.匿名函数: n5.Syms+subs:无需M文件,直接定义: n6.字符串+subs:无需M文件,直接定义. ------------ 1.函数文件+调用函数文件:定义多个M文件 % 调用函数文件:myfile.m clear clc for t=1:10 y=mylfg(t);

Matlab中函数句柄@的作用及介绍

问:[email protected](x)acos(x)表示什么意思?其中@代表什么?答:表示f为函数句柄,@是定义句柄的运算符.[email protected](x)acos(x) 相当于建立了一个函数文件:% f.mfunction  y=f(x)y=acos(x); 若有下列语句:[email protected](x)1/2.*(x==-1/2)+1.*(x>-1/28&x<1/2)+1.2.*(x==-1/2); 则相当于建立了一个函数文件: % xsqual.m fun

matlab set函数

1.MATLAB给每种对象的每一个属性规定了一个名字,称为属性名,而属性名的取值成为属性值.例如,LineStyle是曲线对象的一个属性名,它的值决定着线型,取值可以是'-' .':'.'-.'.'--'或'none'.2.属性的操作    set函数的调用格式为:    set(句柄,属性名1,属性值1,属性名2,属性值2,…) 例子: clearx=0:0.2:12;y1=bessel(1,x);y2=bessel(2,x);y3=bessel(3,x);h=plot(x,y1,x,y2,x

matlab 等值线函数 contour

matlab 等值线函数 contour contour是等高线绘制函数我并没怎么用过这个函数,只是参照help将上面的英文翻译一下,如果有错误,请大家提出来.contour(Z)根据矩阵Z画出等高线,Z是以x,y为平面的高度.Z必须是一个至少二维的矩阵.等高线的数量和水平线的值将根据Z值的最小值和最大值自动选择.x,y轴的范围是[1:n]和[1:m],[m,n]=size(Z)contour(Z,n)用n条水平线来绘制Z的等高线.contour(Z,v)是以向量v中的数据来绘制矩阵Z的等高线.

MyEclipse调用Matlab打包函数

本文部分内容参考了http://www.360doc.com/content/15/1103/16/1180274_510463048.shtml 一.检查Java环境 对于已经装上JAVA环境的计算机,首先要确定一下装的环境是否与当前的Matlab builder for java版本相兼容,本文使用的Matlab版本是R2014a. 在CMD.EXE中键入 :java -version 如果出现图中信息则表示已经安装好了JAVA环境并且可以看到它的版本 进一步在cmd中输入javac -ve

Matlab sum( ) 函数

Matlab 图像处理  Day8 1.sum( ): %  sum 函数有常用的 2 种形式 < i >. S = sum( X ); < ii >. S = sum( X,DIM ); Sample: % 由上述例子可以发现 sum( a , 1 ) = sum( a )         % 意思即为对矩阵 a 的列求和 sum( a , 2 )                          % 意思即为对矩阵 a 的行求和 % 一些特殊的小用法: sum( a(:) ):

Matlab bitget() 函数的使用

Matlab 图像处理 Day5: 1.bitget( ) 函数: % 个人觉得biget( ) 函数可大致分为两大类: 1.由低位到高位方式输出 , 2.由高位到低位方式输出 < i >.由低位到高位输出固定模式  bitget( x , m : n );   %参数说明:x是要被转换为2进制的数,输出从低位低 m 位到第 n 位的数字 Sample: < ii >.由高位到低位输出的固定模式 bitget( x , m : -1 : n ); % 参数说明: x意义同上.m代表

Matlab permute( )函数 &amp; 矩阵A 和矩阵A&#39; 的差别 &amp; imresize( )函数

Matlab  图像处理 Day9: 1.permute( ): % permute 函数功能是重新排列数组,可以交换数组的维数 % 对于二维数组而言.可以利用 permute 函数对矩阵进行转置 Sample: 2.矩阵A 和矩阵A'之间的差别: A' 是举证 A 的转置矩阵. 3.imresize( ): % 函数用于缩放处理 % 其一般形式为  <i> B = imresize(A, m) B矩阵的长宽变成A矩阵的m倍,若 m > 1 ,则 B 为 A 的放大图像 若 m <