主要内容

dsp.SampleRateConverter

多级采样率转换器

描述

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

将一个信号的采样率:

  1. 创建dsp.SampleRateConverter对象并设置其属性。

  2. 调用对象的参数,就好像它是一个函数。

了解更多关于系统对象是如何工作的,看到的系统对象是什么?

创建

描述

src= dsp.SampleRateConverter创建一个多级冷杉采样率转换器系统对象,src,将每个通道的采样率转换的输入信号。

例子

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

属性

全部展开

属性,除非另有注明nontunable后,这意味着你不能改变它们的值调用对象。对象锁当你叫他们,释放函数打开它们。

如果一个属性可调在任何时候,你可以改变它的值。

改变属性值的更多信息,请参阅系统设计在MATLAB使用系统对象

指定感兴趣的双面的带宽(速率转换之后)是一个积极的标量用赫兹表示。这个属性集的双边“带宽的部分你想保留的信号。

指定输入信号的采样率是一个积极的标量用赫兹表示。输入采样率必须大于感兴趣的带宽。

指定的最大允许对输出信号的采样率是一个积极的标量在0和1之间。

输出速率公差允许在许多情况下,一个简单的设计。实际的输出采样率各不相同,但在指定范围内。例如,如果OutputRateTolerance被指定为0.01,那么实际输出采样率的范围OutputSampleRate±1%。

指定输出信号的采样率作为一个积极的标量用赫兹表示。输出采样率必须大于感兴趣的带宽。

指定阻带衰减是一个积极的标量用分贝表示。这个属性是任何混叠的最少参与过程是衰减的。

使用

语法

描述

例子

y= src (x)设计一个或多个多重速率的FIR滤波器,然后使用过滤器将每个通道的速度(列)真实的或复杂的输入信号x到输出采样率。

输入参数

全部展开

输入信号,指定为一个向量或矩阵的大小P——- - - - - -。输入的数量的行P可以任意的和不需要一个整体大量毁灭的多个因素。您可以确定使用的大量毁灭因素getRateChangeFactors函数。的对象对待每一列x作为一个单独的通道。

这个对象支持适应输入信号金宝app,即信号的帧长度(行数)可以改变即使对象是锁着的。然而,渠道(列)的数量必须保持不变。

数据类型:|
复数的支持:金宝app是的

输出参数

全部展开

重新取样信号,作为一个向量或矩阵返回。

当输入的大小P——- - - - - -,输出信号有上界的大小装天花板(P/R)———,在那里R的比例是输入采样率和输出采样率。通道的数量(列)不会改变。

数据类型:|
复数的支持:金宝app是的

对象的功能

使用一个目标函数,指定系统对象作为第一个输入参数。例如,释放系统资源的系统对象命名obj使用这个语法:

发行版(obj)

全部展开

getActualOutputRate 得到实际输出率
getFilters 获得单级过滤器
getRateChangeFactors 得到整体插值和大量毁灭的因素
visualizeFilterStages 可视化过滤阶段
成本 采样率转换器的实现成本
freqz 多重速率的多级滤波器的频率响应
信息 显示信息采样率转换器
一步 运行系统对象算法
释放 释放资源,并允许修改系统对象属性值和输入特征
重置 重置的内部状态系统对象

例子

全部折叠

转换音频信号从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的)

图包含2轴对象。坐标轴对象1与标题通道1,包含时间(s)包含2线类型的对象。一个或多个行显示的值只使用这些对象标记代表输入样本,输出样本。坐标轴对象2与标题通道2,包含时间(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,包含时间(s)包含2线类型的对象。一个或多个行显示的值只使用这些对象标记代表输入样本,输出样本。坐标轴对象2与标题通道2,包含时间(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的)

图包含2轴对象。坐标轴对象与标题通道1包含3线类型的对象。一个或多个行显示的值只使用这些对象标记代表插值输入,输入样本,输出样本。坐标轴对象与标题通道2包含3线类型的对象。一个或多个行显示的值只使用这些对象标记代表插值输入,输入样本,输出样本。

创建一个多级采样率转换器使用默认属性。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多级采样率转换器,默认属性。src192千赫和44.1千赫之间的转换。找个人滤波器级联一起执行转换。

src = dsp.SampleRateConverter;c = getFilters (src);

可视化的频率响应杀害多人者用于过程的第一阶段。

m = c.Stage1;[h, w] = freqz (m);情节(w /π,20 * log10 (abs (h)))包含(“ω\ / \π”)ylabel (“(dB)级”)

图包含一个坐标轴对象。坐标轴对象包含ω空白/空白π,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)

图1图:级响应(dB)包含一个坐标轴对象。坐标轴对象与标题级响应(dB),包含频率(MHz), ylabel级(dB)(归一化到0分贝)包含3线类型的对象。这些对象代表过滤器# 1,过滤# 2,过滤# 3。

算法

  • 一般的多级采样率转换器执行多级大批杀害,单级采样率转换和多级插值。这些步骤的实际设计包括最多两个。

  • 程序自动确定最优数量的大量毁灭或插值阶段。在特殊情况下,该算法可以执行大量毁灭或内插在一个单一的阶段。

  • 该算法总是试图开始通过降低采样率。这减少所需的计算。才一步确保中间采样率不低于带宽的兴趣和块不过滤掉任何信息。

  • 每个阶段使用halfband或尼奎斯特过滤器来减少非零系数的数量。

  • 该算法允许过渡带混淆,因为它降低了实施成本。它使感兴趣的信号带宽内的别名释放到指定的值StopbandAttenuation财产。

扩展功能

版本历史

介绍了R2014b

全部展开