文档

dsp。SampleRateConverter系统对象

多级采样速率转换器

描述

SampleRateConverter系统对象™转换传入信号的采样率。

转换信号的采样率:

  1. 定义并设置采样速率转换器。看到建设

  2. 调用一步的性质来转换采样率dsp。SampleRateConverter.的行为一步特定于工具箱中的每个对象。

请注意

从R2016b开始,而不是使用一步方法来执行System对象定义的操作,则可以使用参数调用该对象,就像调用函数一样。例如,Y = step(obj,x)而且Y = obj(x)请执行相同的操作。

建设

src= dsp。SampleRateConverter创建多级FIR采样速率转换器系统对象,src,它转换输入信号的每个通道的采样率。

src= dsp。SampleRateConverter (名称,值返回多级FIR采样速率转换器系统对象,src,其中的属性和选项由一个或多个指定名称,值对参数。

属性

全部展开

指定感兴趣的双边带宽(速率转换后)为用赫兹表示的正标量。此属性是您希望保留的信号中携带信息部分的双面带宽。默认值是40khz。

指定输入信号的采样率为用赫兹表示的正标量。输入采样率必须大于感兴趣的带宽。默认值是192khz。

指定输出信号的采样率的最大允许容差为0到1之间的正标量。默认值为0。

在许多情况下,输出速率公差允许更简单的设计。实际输出采样率有所不同,但都在指定范围内。例如,如果OutputRateTolerance指定为0.01,则实际输出采样率在OutputSampleRate±1%。

指定输出信号的采样率为用赫兹表示的正标量。输出采样率必须大于感兴趣的带宽。默认为44.1千赫。

将阻带衰减指定为以分贝表示的正标量。此属性是该过程中涉及的任何混叠被衰减的最小值。默认值为80 dB。

方法

成本 计算实施成本
freqz 频率响应
getActualOutputRate 获得实际产量
getFilters 获得单级过滤器
getRateChangeFactors 整体插值和抽取因子
信息 显示有关采样速率转换器的信息
重置 多级采样速率转换器内部状态复位
一步 转换信号的采样率
visualizeFilterStages 可视化过滤阶段
所有系统对象通用
释放

允许系统对象属性值更改

例子

全部展开

将音频信号的采样率从44.1 kHz (CD质量)转换为96 kHz (DVD质量)。

请注意:此示例仅在R2016b及以上版本运行。如果您正在使用较早的版本,请将对函数的每次调用替换为等效的调用一步语法。例如,myObject(x)变成step(myObject,x)。

Fs1 = 44.1e3;Fs2 = 96e3;SRC = dsp。SampleRateConverter (“带宽”, 40 e3,...“InputSampleRate”, fs1、“OutputSampleRate”, fs2);[L,M] = getRateChangeFactors(SRC);FrameSize = 10*M;AR = dsp。AudioFileReader (“guitar10min.ogg”,...“SamplesPerFrame”, FrameSize);AW = dsp。AudioFileWriter (“guitar10min_96k.wav”,...“SampleRate”, fs2);

运行系统15s。释放所有对象。

抽搐toc < 15 x = AR();y = SRC(x);亚历山大-伍尔兹(y);结束释放(AR);释放(AW);释放(SRC);

绘制输入和输出信号。为每个信号使用一组不同的轴。移动输出以补偿由滤波器引入的延迟。

T1 = 0:1/fs1:1/30-1/fs1;T2 = 0:1/fs2:1/30-1/fs2;延迟= 114;El1 = 1:长度(t1)-延时;El2 = 1:长度(t2);El2(1:延迟)= [];Subplot (2,1,1) plot(t1(1:length(el1)),x(el1,1))保持不变情节(t1(1:长度(el1)), x (el1, 2))标题(“输入”) subplot(2,1,2) plot(t2(1:length(el2)),y(el2,1))保持不变情节(t2(1:长度(el2)), y (el2, 2))包含(“时间(s)”)标题(“输出”

放大查看样本率的差异。为每个通道使用一组不同的轴。

图(t1(1:length(el1)),x(el1,1),“啊——”)举行情节(t2(1:长度(el2)), y (el2, 1),“d——”xlim([0.01 0.0103])“第一频道”) subplot(2,1,2) plot(t1(1:length(el1)),x(el1,2),“啊——”)举行情节(t2(1:长度(el2)), y (el2, 2),“d——”xlabel([0.01 0.0103])“时间(s)”)标题(“第二频道”

从A/D转换器输出的信号在98.304 MHz采样。该信号的带宽为20 MHz。将信号的采样率降低到22mhz,这是802.11通道的带宽。准确地进行转换,然后以1%的输出率公差重新进行转换。

SRC1 = dsp。SampleRateConverter (“带宽”, 20 e6,...“InputSampleRate”, 98.304 e6,“OutputSampleRate”22 e6,...“OutputRateTolerance”, 0);SRC2 = dsp。SampleRateConverter (“带宽”, 20 e6,...“InputSampleRate”, 98.304 e6,“OutputSampleRate”22 e6,...“OutputRateTolerance”, 0.01);

使用成本确定每个采样率转换成本的方法。零容忍过程需要的系数是1%过程的500倍以上。

c1 = cost(SRC1)
c1 =带字段的结构:NumCoefficients: 84779 NumStates: 133 MultiplicationsPerInputSample: 27.0422 AdditionsPerInputSample: 26.0684
c2 =成本(SRC2)
c2 =带字段的结构:NumCoefficients: 150 NumStates: 127 MultiplicationsPerInputSample: 22.6667 AdditionsPerInputSample: 22.1111

查找每次转换中使用的整数上采样和下采样因子。

[L1,M1] = getRateChangeFactors(SRC1)
L1 = 1375
M1 = 6144
[L2,M2] = getRateChangeFactors(SRC2)
L2 = 2
M2 = 9

当采样率转换有1%的公差时,计算输出信号的实际采样率。

getActualOutputRate (SRC2)
Ans = 2.1845e+07

算法

  • 一般的多级采样率转换器按此顺序执行多级抽取、单级采样率转换和多级插值。实际设计最多包括其中两个步骤。

  • 该程序自动确定抽取或插值阶段的最佳数量。在特殊情况下,抽取或插值可以在一个阶段中执行。

  • 算法总是试图从降低采样率开始。这减少了所需的计算量。抽取步骤被设计成没有中间采样率低于感兴趣的带宽。这确保了没有信息被过滤掉。

  • 每个单独的阶段使用半带或奈奎斯特滤波器来最小化非零系数的数量。

  • 过渡带混叠是允许的,因为它降低了实现成本。信号在感兴趣的带宽内被保持为别名,不超过指定的值StopbandAttenuation财产。

扩展功能

在R2014b中引入

这个话题有用吗?