主要内容

dsp。SineWave

产生离散正弦波

描述

dsp。SineWave系统对象™生成一个真实或复杂的多通道正弦信号,每个输出通道具有独立的振幅、频率和相位。

对于实正弦和复正弦,振幅频率,PhaseOffset属性可以是标量或长度N向量,N输出中的通道数。当您指定这些属性中的至少一个为长度-时N向量,为其他属性指定的标量值将应用于每个属性N频道。

要生成一个离散时间正弦信号:

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

  2. 使用参数调用对象,就像调用函数一样。

有关系统对象如何工作的详细信息,请参见什么是系统对象?

创建

描述

正弦= dsp。SineWave创建一个正弦波对象,生成一个振幅为1,频率为100 Hz,相位偏移为0的实值正弦波。缺省情况下,正弦波对象只生成一个采样。

正弦= dsp。SineWave (名称,值创建一个将每个指定属性设置为指定值的正弦波对象。将每个属性名用单引号括起来。

例子:正弦= dsp.SineWave('振幅',2);

例子

正弦= dsp。SineWave (amp,频率,相位,名称,值属性创建正弦波对象振幅属性设置为amp频率属性设置为频率PhaseOffset属性设置为阶段,以及设置为指定值的任何其他指定属性。

属性

全部展开

除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放功能解锁它们。

如果属性为可调,您可以随时更改其值。

有关更改属性值的详细信息,请参见使用系统对象的MATLAB系统设计

正弦波的振幅,指定为下列之一:

  • scalar——标量应用于所有通道。

  • 向量A的长度N矢量包含了每一个正弦波的振幅N输出通道。的向量长度必须与指定的向量长度相同频率而且PhaseOffset属性。

可调:是的

依赖关系

此属性仅在设置时可调方法要么三角函数的“差”

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

正弦波的频率,以Hz为单位,指定为下列之一:

  • scalar——标量应用于所有通道。

  • 向量A的长度N矢量中包含了正弦波的频率N输出通道。的向量长度必须与指定的向量长度相同振幅而且PhaseOffset属性。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

正弦波的相位偏移,以弧度为单位,指定为下列之一:

  • scalar——标量应用于所有通道。

  • 向量A的长度N矢量包含了正弦波的相位偏移N输出通道。的向量长度必须与指定的向量长度相同振幅而且频率属性。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

标志,指示波形是实波形还是复数波形,指定为:

  • ——波形输出真实。

  • 真正的——波形输出复杂。

用于生成正弦波的方法,指定为下列之一:

  • 三角函数的对象通过对连续时间函数采样来计算正弦信号。

  • “查表”对象在模拟开始时预先计算每个输出正弦信号的唯一样本,并根据需要从内存中召回样本。

  • “差”——对象使用增量算法。该算法基于前一个采样时间计算的输出值和预先计算的更新项来计算输出样本。

优化速度或内存的正弦值表,指定为:

  • “速度”——该表包含k元素,k是正弦波的一个完整周期内输入样本的数量。每个正弦波的周期必须是1/的整数倍Fs,在那里Fs是值SampleRate属性值。也就是说,每个元素的频率财产必须是形式Fs/,在那里整数是否大于1

  • “记忆”——该表包含k/ 4的元素。

依赖关系

属性时才应用此属性方法财产“查表”

输出信号的采样率(以Hz为单位),指定为正标量。

例子:44100

例子:22050

从每个正弦信号缓冲到输出帧的连续采样数,指定为正整数。

例子:1000

例子:5000

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

正弦波输出数据类型,指定为“双”“单一”,或“自定义”

定点属性

输出字长和分数长,指定为字长为16的自签名数字类型。

例子:numerictype([], 32岁,30)

例子:numerictype([], 16岁,15)

依赖关系

属性时才应用此属性方法财产“查表”OutputDataType财产“自定义”

使用

描述

例子

sineOut= sin ()创建正弦波输出,sineOut

输出参数

全部展开

正弦波输出,作为矢量或矩阵返回。的SamplesPerFrame属性确定输出矩阵中的行数。如果频率或者是PhaseOffset属性是一个向量,向量的长度决定了输出矩阵中的列(通道)数。如果频率或者是PhaseOffset属性为标量,则输出矩阵中的通道数为1。

OutputDataType属性设置输出的数据类型。

数据类型:||fi

对象的功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,释放system对象的系统资源obj,使用这种语法:

发行版(obj)

全部展开

一步 运行系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
重置 重置的内部状态系统对象

例子

全部折叠

请注意:如果您正在使用R2016a或更早的版本,请将对对象的每个调用替换为等效的调用一步语法。例如,obj (x)就变成了步骤(obj, x)

产生振幅为2,频率为10hz,初始相位为0的正弦波。

sine1 = dsp.SineWave(2,10);sine1。SamplesPerFrame = 1000;Y = sine1();情节(y)

图中包含一个轴对象。axis对象包含一个line类型的对象。

产生两个正弦波,相位偏移为pi/2弧度。

sine2 = dsp.SineWave;sine2。频率= 10;sine2。PhaseOffset = [0 pi/2];sine2。SamplesPerFrame = 1000;Y = sin2 ();情节(y)

图中包含一个轴对象。axis对象包含2个line类型的对象。

这个例子展示了如何在MATLAB®中低通滤波噪声信号,并使用频谱分析仪可视化原始和滤波信号。有关此示例的金宝appSimulink®版本,请参见Simulink中噪声正弦波信号的滤波帧金宝app

指定信号源

输入信号是两个频率为1khz和10khz的正弦波的和。采样频率为44.1 kHz。

Sine1 = dsp。SineWave (“频率”1 e3,“SampleRate”44.1 e3);Sine2 = dsp。SineWave (“频率”, 10 e3,“SampleRate”44.1 e3);

创建低通过滤器

低通FIR滤波器,dsp。LowpassFilter,利用广义Remez FIR滤波器设计算法设计了一种最小阶FIR低通滤波器。设置通频带频率为5000hz,阻频带频率为8000hz。通带纹波为0.1 dB,阻带衰减为80 dB。

FIRLowPass = dsp。LowpassFilter (“PassbandFrequency”, 5000,...“StopbandFrequency”, 8000);

创建频谱分析仪

设置频谱分析仪,比较原始信号和滤波信号的功率谱。频谱单位为dBm。

光谱分析仪(“PlotAsTwoSidedSpectrum”假的,...“SampleRate”, Sine1。SampleRate,...“ShowLegend”,真的,...“YLimits”, -145年,45);SpecAna。ChannelNames = {“原始噪声信号”...低通滤波信号};

为每帧指定样本

本例使用基于帧的处理,其中数据一次处理一帧。每一帧数据包含来自独立通道的连续样本。基于帧的处理对于许多信号处理应用是有利的,因为您可以一次处理多个样本。通过将数据缓冲到帧中并处理数据的多采样帧,您可以提高信号处理算法的计算时间。设置每帧样本的数量为4000。

Sine1。SamplesPerFrame = 4000;Sine2。SamplesPerFrame = 4000;

滤波有噪声的正弦波信号

将标准差为0.1的零均值高斯白噪声加到正弦波的和中。使用FIR滤波器对结果进行过滤。在运行模拟时,频谱分析仪显示源信号中超过8000 Hz的频率被衰减。产生的信号保持在1khz的峰值,因为它落在低通滤波器的通带中。

i = 1: 1000 x = Sine1()+Sine2()+0.1.*randn(Sine1. samplesperframe,1);y = FIRLowPass(x);SpecAna (x, y);结束发行版(SpecAna)

带通滤波器是一种离散时间正弦波信号,由频率为1khz, 10khz和15khz的三个正弦波组成。

设计FIR等纹波带通滤波器,首先创建一个带通滤波器设计规范对象,然后使用这些规范设计滤波器。

带通滤波器设计

使用创建一个带通滤波器设计规范对象fdesign.bandpass

bandpassSpecs = fdesign.bandpass(, Fst1 Fp1 Fp2, Fst2 Ast1,美联社,Ast2”...1/4, 3/8, 5/8, 6/8, 60岁,1、60);

列出此对象的可用设计方法。

designmethods (bandpassSpecs)
类fdesign的设计方法。带通(Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2): butter cheby1 cheby2椭圆等纹kaiserwin

为了设计一个等纹波滤波器,选择“equiripple”

bpFilter =设计“equiripple”“Systemobject”,真正的)
bpFilter = dsp。FIRFilter与属性:结构:'直接形式'分子来源:'属性'分子:[-0.0043 -3.0812e-15 0.0136 3.7820e-15 -0.0180…显示所有属性

可视化所设计滤波器的频率响应。

fvtool (bpFilter“Fs”, 44100)

{

创建正弦信号

创建一个频率为1 kHz、10 kHz和15 kHz的三个正弦波的和的信号。初始化频谱分析仪,查看原始信号和滤波后的信号。

Sine1 = dsp。SineWave (“频率”1 e3,“SampleRate”, 44.1 e3,“SamplesPerFrame”, 4000);Sine2 = dsp。SineWave (“频率”, 10 e3,“SampleRate”, 44.1 e3,“SamplesPerFrame”, 4000);Sine3 = dsp。SineWave (“频率”15 e3,“SampleRate”, 44.1 e3,“SamplesPerFrame”, 4000);光谱分析仪(“PlotAsTwoSidedSpectrum”假的,...“SampleRate”, Sine1。SampleRate,...“ShowLegend”,真的,...“YLimits”, -240年,45);SpecAna。ChannelNames = {“原始噪声信号”带通滤波信号};

滤波正弦信号

使用所设计的带通滤波器对正弦信号进行滤波。在频谱分析仪中查看原始信号和滤波后的信号。1千赫的音调被过滤和衰减。10 kHz的音调不受影响,15 kHz的音调轻微减弱,因为它出现在滤波器的过渡带中。

i = 1,1000 x = Sine1()+Sine2()+Sine3();y = bpFilter(x)SpecAna (x, y);结束发行版(SpecAna)

更多关于

全部展开

算法

全部展开

扩展功能

版本历史

在R2012a中引入