dsp.SampleRateConverter
多级采样率转换器
描述
的SampleRateConverter
系统对象™将传入信号的采样率。
将一个信号的采样率:
创建
dsp.SampleRateConverter
对象并设置其属性。调用对象的参数,就好像它是一个函数。
了解更多关于系统对象是如何工作的,看到的系统对象是什么?
创建
描述
创建一个多级冷杉采样率转换器系统对象,src
= dsp.SampleRateConvertersrc
,将每个通道的采样率转换的输入信号。
返回一个多级冷杉采样率转换器系统对象,src
= dsp.SampleRateConverter (名称,值
)src
,属性和指定的一个或多个选项名称,值
对参数。
属性
属性,除非另有注明nontunable后,这意味着你不能改变它们的值调用对象。对象锁当你叫他们,释放
函数打开它们。
如果一个属性可调在任何时候,你可以改变它的值。
改变属性值的更多信息,请参阅系统设计在MATLAB使用系统对象。
带宽
- - - - - -感兴趣的双面的带宽
40000年(默认)|积极的标量
指定感兴趣的双面的带宽(速率转换之后)是一个积极的标量用赫兹表示。这个属性集的双边“带宽的部分你想保留的信号。
InputSampleRate
- - - - - -输入信号的采样率
192000年(默认)|积极的标量
指定输入信号的采样率是一个积极的标量用赫兹表示。输入采样率必须大于感兴趣的带宽。
OutputRateTolerance
- - - - - -最大允许对输出采样率
0(默认)|积极的标量
指定的最大允许对输出信号的采样率是一个积极的标量在0和1之间。
输出速率公差允许在许多情况下,一个简单的设计。实际的输出采样率各不相同,但在指定范围内。例如,如果OutputRateTolerance
被指定为0.01
,那么实际输出采样率的范围OutputSampleRate
±1%。
OutputSampleRate
- - - - - -输出信号的采样率
44100年(默认)|积极的标量
指定输出信号的采样率作为一个积极的标量用赫兹表示。输出采样率必须大于感兴趣的带宽。
StopbandAttenuation
- - - - - -最低分贝衰减别名组件
80年(默认)|积极的标量
指定阻带衰减是一个积极的标量用分贝表示。这个属性是任何混叠的最少参与过程是衰减的。
使用
语法
输入参数
x
- - - - - -输入信号
向量|矩阵
输入信号,指定为一个向量或矩阵的大小P——- - - - - -问。输入的数量的行P可以任意的和不需要一个整体大量毁灭的多个因素。您可以确定使用的大量毁灭因素getRateChangeFactors
函数。的对象对待每一列x
作为一个单独的通道。
这个对象支持适应输入信号金宝app,即信号的帧长度(行数)可以改变即使对象是锁着的。然而,渠道(列)的数量必须保持不变。
数据类型:单
|双
复数的支持:金宝app是的
输出参数
y
——重新取样信号
向量|矩阵
重新取样信号,作为一个向量或矩阵返回。
当输入的大小P——- - - - - -问,输出信号有上界的大小装天花板
(P/R)———问,在那里R的比例是输入采样率和输出采样率。通道的数量(列)不会改变。
数据类型:单
|双
复数的支持:金宝app是的
对象的功能
使用一个目标函数,指定系统对象作为第一个输入参数。例如,释放系统资源的系统对象命名obj
使用这个语法:
发行版(obj)
特定于dsp.SampleRateConverter
getActualOutputRate |
得到实际输出率 |
getFilters |
获得单级过滤器 |
getRateChangeFactors |
得到整体插值和大量毁灭的因素 |
visualizeFilterStages |
可视化过滤阶段 |
例子
采样率转换的音频信号
转换音频信号从44.1 kHz的采样率(CD音质)到96千赫(DVD质量)。
注意:的dsp.AudioFileWriter
不支持系统对象™金宝appMATLAB在线。
傅氏国际= 44.1 e3;FsOut = 96年e3;SRC = dsp.SampleRateConverter (“带宽”,40 e3,…“InputSampleRate”傅氏国际,“OutputSampleRate”,FsOut);[L, M] = getRateChangeFactors (SRC);FrameSize = 10 *米;基于“增大化现实”技术= dsp.AudioFileReader (“guitar10min.ogg”,…“SamplesPerFrame”,FrameSize);AW = dsp.AudioFileWriter (“guitar10min_96k.wav”,…“SampleRate”,FsOut);
100帧转换的音频信号。释放所有对象。
为n = 1:10 0 x = AR ();y = SRC (x);亚历山大-伍尔兹(y);结束释放(AR);释放(AW);释放(SRC);
画出输入和输出信号。的延迟采样率转换器输出信号引入了一个延迟。
tx =(0:长度(x) 1)。/国际;泰=(0:长度(y) 1)。/ FsOut;图次要情节(2,1,1)情节(tx, x (: 1),“。”)举行在情节(泰,y (: 1),“——”)ylim ([-0.25 - 0.25]);xlim(0.005[0])包含(“时间(s)”)传说(输入样本的,的输出样本,“位置”,“最佳”)标题(通道1的次要情节(2,1,2)情节(tx, x (:, 2),“。”)举行在情节(泰,y (:, 2),“——”)ylim ([-0.25 - 0.25]);xlim(0.005[0])包含(“时间(s)”)传说(输入样本的,的输出样本,“位置”,“最佳”)标题(通道2的)
使用outputDelay
函数来确定这个延迟值。占这个延迟,转变这个延迟值的输出。
(延迟,~,~)= outputDelay (SRC, Fc = 0)
延迟= 0.0012
tx =(0:长度(x) 1)。/国际;泰=(0:长度(y) 1)。/ FsOut;图次要情节(2,1,1)情节(tx, x (: 1),“。”)举行在情节(ty-delay, y (: 1),“——”0.005)xlim([0])包含(“时间(s)”)传说(输入样本的,的输出样本,“位置”,“最佳”)标题(通道1的次要情节(2,1,2)情节(tx, x (:, 2),“。”)举行在情节(ty-delay, y (:, 2),“——”0.005)xlim([0])包含(“时间(s)”)传说(输入样本的,的输出样本,“位置”,“最佳”)标题(通道2的)
放大看样本率的差异。
图次要情节(2,1,1)情节(tx, x(: 1),颜色= [0.6 0.6 0.6])在情节(tx, x (: 1),“罗”)情节(ty-delay y (: 1),“b”。传说)xlim ([0.0105 - 0.0107]) (“插入输入”,输入样本的,的输出样本)标题(通道1的次要情节(2,1,2)情节(tx, x(:, 2),颜色= [0.6 0.6 0.6])在情节(tx, x (:, 2),“罗”)情节(ty-delay y (:, 2),“b”。传说)xlim ([0.0105 - 0.0107]) (“插入输入”,输入样本的,的输出样本)标题(通道2的)
正弦信号的采样率转换
创建一个多级采样率转换器使用默认属性。192千赫至44.1千赫的转换器转换三个阶段。
src = dsp.SampleRateConverter;
使用src
将一个嘈杂的正弦信号的采样率。20 kHz的正弦信号的频率和取样0.1 s。
f = 20 e3;傅氏国际= src.InputSampleRate;FsOut = src.OutputSampleRate;t1 =(0:1 /国际:0.1 1 /国际)';罪罪= f(2 *π* * t1) + randn(大小(t1));
输入的功率谱密度估计。
hsa =简介(“SampleRate”傅氏国际,…“方法”,“韦尔奇”,“YLimits”,40 [-40]);hsa(罪)释放(hsa)
转换信号的采样率。输出的功率谱密度估计。
多= src(罪);hsb =简介(“SampleRate”FsOut,…“方法”,“韦尔奇”,“YLimits”,40 [-40]);hsb(多)释放(hsb)
公差成本采样率转换
输出信号的A / D转换器采样在98.304 MHz。信号的带宽20 MHz。信号的采样率减少到22 MHz, 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);
使用成本
方法来确定每个采样率转换的成本。零容忍的过程需要超过500倍系数为1%的过程。
c1 =成本(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
找到整数upsampling和downsampling因素在每个转换使用。
(L1, M1) = getRateChangeFactors (SRC1)
L1 = 1375
M1 = 6144
(L2, M2) = getRateChangeFactors (SRC2)
L2 = 2
M2 = 9
计算时输出信号的实际采样率采样率转换1%的公差。
getActualOutputRate (SRC2)
ans = 2.1845 e + 7
重置一个采样率转换器
创建一个多级采样率转换器使用默认属性,结合三个过滤阶段对应用于转换从192千赫至44.1千赫。确定其整体大量毁灭和插值的因素。
src = dsp.SampleRateConverter;[L, M] = getRateChangeFactors (src);
创建一个双通道随机信号。指定的样本数量等于大量毁灭的因素。两次调用对象上的信号。
x = randn (M, 2);日元= src (x);y2 = src (x);没有= (y2 = = y1)
没有=1 x2逻辑阵列0 0
输出不同的内部状态src
已经改变了。使用重置
重置转换器并再次调用转换器。验证输出不变。
重置(src) y3 = src (x);是的= (y3 = = y1)
是的=1 x2逻辑阵列1
频率响应的默认的转换器
创建一个多级采样率转换器使用默认属性,结合三个过滤阶段对应用于转换从192千赫至44.1千赫。计算和显示频率响应。
src = dsp.SampleRateConverter;[H f] = freqz (src);情节(f, 20 * log10 (abs (H)))
计算和显示的频率响应范围在20 Hz之间和44.1 kHz。
f = 20:10:44.1e3;[H f] = freqz (src, f);情节(f, 20 * log10 (abs (H)))
单级过滤器
创建src
多级采样率转换器,默认属性。src
192千赫和44.1千赫之间的转换。找个人滤波器级联一起执行转换。
src = dsp.SampleRateConverter;c = getFilters (src);
可视化的频率响应杀害多人者用于过程的第一阶段。
m = c.Stage1;[h, w] = freqz (m);情节(w /π,20 * log10 (abs (h)))包含(“ω\ / \π”)ylabel (“(dB)级”)
默认的多级采样率转换器
创建一个多级采样率转换器使用默认属性,结合三个过滤阶段对应用于转换从192千赫至44.1千赫。
src = dsp.SampleRateConverter
src = dsp.SampleRateConverterwith properties: InputSampleRate: 192000 OutputSampleRate: 44100 OutputRateTolerance: 0 Bandwidth: 40000 StopbandAttenuation: 80
显示的信息设计。
信息(src)
ans = '整体插值系数:147整体力量的因素:640数量的过滤器:3次乘法/输入样本:27.667188的系数:8631过滤器:过滤器1:dsp。FIRDecimator——大量毁灭因素:2过滤器2:dsp。FIRDecimator——大量毁灭因素:2过滤器3:dsp。FIRRateConverter -插值因素:147 -大量毁灭因素:160
输出采样率与给定的公差
获得实际的输出采样率之间的转换192 kHz和44.1 kHz时1%的公差。
src = dsp.SampleRateConverter;src。OutputRateTolerance = 0.01;FsOut = getActualOutputRate (src)
FsOut = 4.4308 e + 04
默认的重采样因素
创建src
多级采样率转换器,默认属性。src
结合三个过滤阶段将从192千赫至44.1千赫。确定其整体插值和大量毁灭因素。
src = dsp.SampleRateConverter;[L, M] = getRateChangeFactors (src)
L = 147
米= 640
采样率转换阶段
创建一个多级采样率转换器使用默认属性,结合三个过滤阶段对应用于转换从192千赫至44.1千赫。可视化阶段。
src = dsp.SampleRateConverter;visualizeFilterStages (src)
算法
一般的多级采样率转换器执行多级大批杀害,单级采样率转换和多级插值。这些步骤的实际设计包括最多两个。
程序自动确定最优数量的大量毁灭或插值阶段。在特殊情况下,该算法可以执行大量毁灭或内插在一个单一的阶段。
该算法总是试图开始通过降低采样率。这减少所需的计算。才一步确保中间采样率不低于带宽的兴趣和块不过滤掉任何信息。
每个阶段使用halfband或尼奎斯特过滤器来减少非零系数的数量。
该算法允许过渡带混淆,因为它降低了实施成本。它使感兴趣的信号带宽内的别名释放到指定的值
StopbandAttenuation
财产。
扩展功能
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
使用笔记和限制:
看到系统在MATLAB代码生成对象(MATLAB编码器)。
的
getRateChangeFactors
函数支持C和c++金宝app代码生成。这个对象支持SIMD代码金宝app生成使用英特尔AVX2技术在这些条件下:
upsampling,输出采样率的比率输入采样率必须是一个整数。
将采样,输出输入采样率采样率的比例必须是一个整数。
输入信号的数据类型
单
或双
。
SIMD技术极大地提高了生成的代码的性能。
从这个对象在您生成的代码,重新取样信号输出一个固定大小的信号,如果输入信号是固定大小的,大量毁灭的多个因素。如果输入不是大量毁灭的多个因素或如果输入是适应信号,然后重新取样信号输出是适应的。
版本历史
介绍了R2014bR2023a:金宝app支持任意输入帧长度
这个对象支持任意的输入信金宝app号帧长度,所以输入帧长度不需要大量毁灭的多个因素。
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。