文档帮助中心文档
反修正离散余弦变换
X = imdct (Y,赢)
X = imdct (Y,赢、名称、值)
例子
X= imdct (Y,赢)的逆修正离散余弦变换(IMDCT)Y,然后与时间窗相乘赢和重叠添加具有50%重叠的帧。
X= imdct (Y,赢)
X
Y
赢
X= imdct (Y,赢,名称,值)每个属性集的名字到指定的价值.未指定的属性具有默认值。
X= imdct (Y,赢,名称,值)
名称,值
的名字
价值
全部折叠
读入音频文件,将其转换为单声道,然后打印。
audioIn=audioread(“FunkyDrums-44p1-stereo-25秒mp3”);audioIn =意味着(audioIn, 2);图(1)情节(audioIn“波”)伊拉贝尔(“振幅”)xlabel(的样本数量)
使用4096点正弦窗口计算MDCT。绘制多层螺旋ct系数随时间变化的功率图。
N = 4096;wdw =罪(π* (-0.5 (1:N)) / N);C =多层螺旋ct (audioIn wdw);图(2)冲浪(pow2db (C *连词(C)),“EdgeColor”,“没有”);视图(90[0])包含(“帧”)伊拉贝尔(“频率”)轴([0 size(C,2) 0 size(C,1)]) colorbar
将表示形式转换回时域。通过计算均方误差验证了重构的完美性。在原始信号上画出重建信号。
audioReconstructed = imdct (C, wdw);呃=意味着((audioIn-audioReconstructed(1:尺寸(audioIn 1):)) ^ 2)。
呃= 9.5937 e-31
图(1)在…上情节(audioReconstructed“r”。)伊拉贝尔(“振幅”)xlabel(的样本数量)
为了实现完美的重建,多层螺旋ct功能零垫的前面和后面的音频输入信号。信号从imdct移除为完美重建而添加的零填充。
多层螺旋ct
imdct
读入音频文件,创建一个2048点的kaiser - bessel导出窗口,然后剪辑音频信号,使其长度为2048的倍数。
[x, fs] = audioread ('单击-16-44p1-mono-0.2秒波形');赢得= kbdwin (2048);xClipped = x(1:end - rem(size(x,1),numel(win)))); / /
把信号转换到频域,然后在时域重建它。绘制原始信号和重建信号,并显示重建误差。
C =多层螺旋ct (xClipped,赢得);y = imdct (C,赢得);图(1)t = (0:size(xClipped,1)-1)'/fs;情节(t, xClipped“波”、t、y,“r”。)传说(原始信号的,重构信号的)标题(strcat (“重建错误=”,num2str(平均值((xClipped-y)。^2)))xlabel(“时间(s)”)伊拉贝尔(“振幅”)
控件可以在没有输入填充的情况下执行MDCT和IMDCTPadInput名称-值对。但是,在信号的前半帧和后半帧会出现重构误差。
PadInput
C =多层螺旋ct (xClipped赢,“PadInput”、假);y = imdct (C,赢了,“PadInput”、假);图(2)t = (0:size(xClipped,1)-1)'/fs;情节(t, xClipped“波”、t、y,“r”。)传说(原始信号的,重构信号的)标题(strcat ("重建错误(没有输入填充)= ",num2str(平均值((xClipped-y)。^2)))xlabel(“时间(s)”)伊拉贝尔(“振幅”)
的输入信号多层螺旋ct如果不是窗长的倍数,则输入信号被填充为零。将原未裁剪信号通过变换对,并将原信号与重构信号进行比较。
C =多层螺旋ct (x,赢得);y = imdct (C,赢得);图(3)子图(2,1,1)plot(x) title(原始信号的)伊拉贝尔(“振幅”)轴([0,马克斯(大小(y, 1),大小(x, 1)), -0.5, 0.5])次要情节(2,1,2)情节(y)标题(重构信号的)xlabel(“时间(s)”)伊拉贝尔(“振幅”)轴([0,马克斯(大小(y, 1),大小(x, 1)), -0.5, 0.5))
重建信号在后端用零填充。将重构信号的零填充去除,绘制原信号和重构信号,然后显示重构误差。
图(4)y = y(1:size(x,1));t =(0:大小(x, 1) 1)”/ fs;情节(t x,“波”、t、y,“r”。)传说(原始信号的,重构信号的)标题(strcat (“重建错误=”num2str(意思是((x - y) ^ 2))))包含(“时间(s)”)伊拉贝尔(“振幅”)
创建一个dsp。AudioFileReader对象以逐帧读取音频数据。创建一个dsp。SignalSink记录重建信号以作比较。创建一个dsp。AsyncBuffer缓冲输入流。
dsp。AudioFileReader
dsp。SignalSink
dsp。AsyncBuffer
fileReader = dsp。AudioFileReader (“FunkyDrums-44p1-stereo-25秒mp3”); 记录器=dsp.SignalSink;buff=dsp.AsyncBuffer;
创建512点kaiser - bessel导出窗口。
N = 512;赢得= kbdwin (N);
在音频流循环中:
从文件中读取一帧数据。
将数据帧写入异步缓冲区。
如果存在半帧数据,则从缓冲区中读取数据,然后执行转换对。叠加电流输出imdct使用前面的输出,并记录结果。更新记忆。
mem=零(N/2,2);%初始化一个空内存而~isDone(fileReader) audioIn = fileReader();写(浅黄色,audioIn);而迷。NumUnreadSamples >= N/2 x = read(buff,N,N/2); C = mdct(x,win,“PadInput”、假);y = imdct (C,赢了,“PadInput”、假);logger(y(1:N/2,:)+mem) mem = y(N/2+1:end,:);结束结束%最后一次使用零填充的最终信号执行变换对。x =阅读(迷,N, N / 2);C =多层螺旋ct (x,赢了,“PadInput”、假);y = imdct (C,赢了,“PadInput”、假);logger(y(1:N/2,:)+mem) reconstructedSignal = logger. buffer;
读取整个原始音频信号。修剪重建信号的前后零填充以便比较。绘制原始信号和重建信号的一个通道,并显示重建误差。
[originalSignal, fs] = audioread (fileReader.Filename);signalLength =大小(originalSignal, 1);reconstructedSignal = reconstructedSignal ((N / 2 + 1): (N / 2 + 1) + signalLength-1:);t =(0:大小(originalSignal, 1) 1)”/ fs;情节(t, originalSignal (: 1),“波”t reconstructedSignal (: 1),“r”。)传说(原始信号的,重构信号的)标题(strcat (“重建错误=”,...num2str(意思是((originalSignal-reconstructedSignal)。^ 2,“所有”))))包含(“时间(s)”)伊拉贝尔(“振幅”)
修改的离散余弦变换(MDCT),指定为向量、矩阵或三维阵列。的尺寸Y被解释为来自多层螺旋ct函数。如果Y是一个l——- - - - - -米——- - - - - -N数组,其维数解释为:
l——每一帧的频域表示中的点数。l肯定是窗口点数的一半,赢.
米——帧数。
N——通道数量。
数据类型:单|双
单
双
窗口应用在时域,指定为矢量。获胜的长度必须是排数的两倍Y:元素个数(赢) = = 2 *大小(Y, 1).要启用完美重构,请使用前向转换中使用的相同窗口多层螺旋ct.
元素个数(赢) = = 2 *大小(Y, 1)
指定可选的逗号分隔的对名称,值参数。的名字参数名和价值是对应的值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数名称1,值1,…,名称,值.
名称1,值1,…,名称,值
“PadInput”,假的
真正的
假
如果输入到转发,则标记多层螺旋ct是垫。如果设置为真正的,输出在两端被截断,以删除前向的零填充多层螺旋ct补充道。
数据类型:逻辑
逻辑
输入阵列的改进离散余弦反变换(IMDCT)Y,返回为独立通道的列向量或矩阵。
修正离散余弦反变换是一种时频变换。给定一个频域输入信号Y和窗口赢,imdct函数对每个独立的通道执行以下步骤:
输入的每一帧都转换为时域表示:
X ( n ) = ∑ k = 0 N 2 − 1 Y ( k ) 因为 [ π ( N 2 ) ( n + ( N 2 ) + 1 2 ) ( k + 1 2 ) ] , n = 0 , 1 , ... , N − 1
在哪里N元素的个数是多少赢.
时域信号的每一帧乘以窗口,赢.
这些帧以50%的重叠叠加来构建一个连续的时域信号。如果PadInput设置为true时,imdct函数假定前向变换(多层螺旋ct被填满N/2在前面和后面的零,并删除填充。默认情况下,PadInput被设置为真正的.
普林斯,J, A.约翰逊和A.布拉德利。基于时域混叠消除的滤波器组设计子带/变换编码IEEE声学、语音和信号处理国际会议.1987年,页2161 - 2164。
[2]普林斯,J.和A.布拉德利。基于时域混叠消除的分析/综合滤波器组设计IEEE声学、语音和信号处理汇刊。1986年第34卷第5期第1153-1161页。
多层螺旋ct|kbdwin|光谱图
kbdwin
光谱图
您有这个示例的修改版本。您想打开这个示例与您的编辑吗?
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
选择一个网站,在那里获得翻译的内容,并看到当地的活动和优惠。根据您的位置,我们建议您选择:.
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
与当地办事处联系
得到审判现在