主要内容

dsp。SineWave

产生离散正弦波

描述

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

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

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

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

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

要了解更多关于System对象如何工作的信息,请参见什么是系统对象?

创建

描述

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

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

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

例子

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

属性

全部展开

除非另有说明,属性是nontunable,这意味着您不能在调用对象之后更改它们的值。对象在调用时锁定,而释放函数打开它们。

如果一个属性是可调,您可以随时更改它的值。

有关更改属性值的更多信息,请参见在MATLAB中使用系统对象进行系统设计

正弦波的振幅,表示为下列之一:

  • 标量——一个标量适用于所有通道。

  • 向量A的长度N向量包含了每个N输出通道。的向量长度必须与指定的长度相同频率PhaseOffset属性。

可调:是的

依赖关系

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

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

正弦波的频率,以Hz表示,为下列之一:

  • 标量——一个标量适用于所有通道。

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

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

正弦波的相位偏移量(以弧度为单位),定义为:

  • 标量——一个标量适用于所有通道。

  • 向量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 (10);sine1。SamplesPerFrame = 1000;y = sine1 ();情节(y)

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

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

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

图中包含一个轴对象。轴对象包含两个类型为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,利用广义雷米兹FIR滤波器设计算法设计了一种最小阶FIR低通滤波器。设置通频带频率为5000hz,阻频带频率为8000hz。通带纹波为0.1 dB,阻带衰减为80 dB。

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

创建频谱分析仪

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

SpecAna = dsp。简介(“PlotAsTwoSidedSpectrum”假的,...“SampleRate”, Sine1。SampleRate,...“NumInputPorts”2,...“ShowLegend”,真的,...“YLimits”, -145年,45);SpecAna。ChannelNames = {“原始噪声信号”...“低通滤过的信号”};

每帧指定样本

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

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

滤波带噪声的正弦波信号

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

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

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

设计FIR Equiripple带通滤波器,首先创建带通滤波器设计规范对象,然后利用这些规范设计滤波器。

设计带通滤波器

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

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

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

designmethods (bandpassSpecs)
类设计的设计方法。带通(Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2):黄油cheby1 cheby2 ellip equiripple kaiserwin

要设计Equiripple滤波器,请选择“equiripple”

bpFilter =设计(bandpassSpecs,“equiripple”“Systemobject”,真正的)
bpFilter = dsp。FIRFilter with properties: Structure: 'Direct form' NumeratorSource: 'Property' Numerator: [-0.0043 -3.0812e-15 0.0136 3.7820e-15 -0.0180…InitialConditions: 0显示所有属性

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

fvtool (bpFilter“Fs”, 44100)

图形过滤器可视化工具-幅度响应(dB)包含一个轴对象和其他类型的uitoolbar, uimenu对象。标题为“大小响应(dB)”的轴对象包含2个类型为line的对象。

创建正弦信号

创建一个信号,它是频率为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);SpecAna = dsp。简介(“PlotAsTwoSidedSpectrum”假的,...“SampleRate”, Sine1。SampleRate,...“NumInputPorts”2,...“ShowLegend”,真的,...“YLimits”, -240年,45);SpecAna。ChannelNames = {“原始噪声信号”“带通滤过的信号”};

过滤器正弦信号

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

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

图频谱分析仪包含一个轴对象和其他类型的对象uiflowcontainer, uimenu, uitoolbar。轴对象包含两个类型为line的对象。这些对象分别代表原始噪声信号、带通滤波信号。

更多关于

全部展开

算法

全部展开

扩展功能

介绍了R2012a