您可以根据系统的测量输入和输出数据估计未知系统的传递函数。
在DSP System Toolbox™中,您可以估计使用系统的传输功能dsp.transferfuncetionestimator.
在MATLAB中的系统对象™®和离散传递函数估计在仿真软件万博1manbetx®.输入之间的关系x和产出y由线性,时间不变传输函数建模Txy.传递函数是交叉功率谱密度的比率x和y,Pyx.的功率谱密度x,Pxx:
的dsp.transferfuncetionestimator.
对象和离散传递函数估计块使用Welch的平均周期图方法来计算Pxx和Pxy.有关此方法的更多详细信息,请参阅光谱分析.
一致
之间的相干性,或大小的平方相干性x和y被定义为:
相干函数估计了你能预测到的程度y从x.相干性的值在这个范围内0≤Cxy(f)≤1.如果Cxy= 0,输入x和产出y是不相关的。一个Cxy当值大于0且小于1时,表示:
测量是吵了。
该系统是非线性的。
输出y是x和其他投入。
线性系统的相干性表示输入在该频率上产生的输出信号功率的小数部分。对于一个特定的频率,1 -Cxy是输入输入没有贡献的输出的分数力的估计。
当你设置opportoChe
的属性dsp.transferfuncetionestimator.
来真实
,该对象计算输出一致性。在离散传递函数估计块,要计算相干谱,选择输出幅度平方连贯估计复选框。
在MATLAB™中估计系统的传递函数,使用dsp.transferfuncetionestimator.
系统对象™。该对象实现韦尔奇平均修正周期图方法,并使用测量的输入和输出数据进行估计。
初始化系统
该系统由两个滤波器级联而成:dsp。低通滤波器和dsp并行连接。AllpassFilter dsp.AllpoleFilter。
allpole = dsp.allpolefilter;AllPass = DSP.AllPassFilter;lpfilter = dsp.lowpassfilter;
指定信号源
系统的输入是具有100Hz频率的正弦波。采样频率为44.1 kHz。
sine = dsp.sinewave(“频率”, 100,“SampleRate”,44100,...“SamplesPerFrame”,1024);
创建传递函数估计
为了估计系统的传递函数,创建dsp.transferfuncetionestimator.
系统对象。
tfe = dsp。TransferFunctionEstimator('forderrange',',...“OutputCoherence”,真正的);
创建数组的阴谋
初始化两个dsp.arrayplot.
对象:一个要显示系统的幅度响应,另一个显示输入和输出之间的相干估计。
tfeplotter = dsp。ArrayPlot ('plottype',“行”,...'xlabel',的频率(赫兹),...'ylabel',“级响应(dB)”,...“YLimits”,[ - 120 20],...'xoffset',0,...'xlabel',的频率(赫兹),...'标题','系统传输功能',...'SampleIncrement', 44100/1024);coherenceplotter = dsp。ArrayPlot ('plottype',“行”,...“YLimits”, 1.2 [0],...'ylabel',“一致性”,...'xoffset',0,...'xlabel',的频率(赫兹),...'标题','连贯估计',...'SampleIncrement', 44100/1024);
默认情况下,数组绘图的X轴处于样本中。要将此轴转换为频率,请设置“SampleIncrement”属性dsp.arrayplot.
对象到FS / 1024。在此示例中,该值为44100/1024或43.0664。对于双边光谱,XOffset
财产的财产dsp.arrayplot.
对象必须为[-Fs/2]。频率在[-Fs/2 Fs/2]范围内变化。在本例中,阵列图显示了单侧频谱。因此,设置XOffset
到0。频率在范围内变化[0fs / 2]。
估计传递函数
传递函数估计器接受两个信号:输入到两级滤波器和两级滤波器的输出。过滤器的输入是包含添加性白色高斯噪声的正弦波。噪声的平均值为零,标准偏差为0.1。估算器估计两级滤波器的传递函数。估计器的输出是滤波器的频率响应,这是复杂的。要提取此复杂估计的幅度部分,请使用ABS功能。要将结果转换为DB,请应用20 * log10(幅度)的转换因子。
为ITER = 1:1000输入= SINE()+ .1 * RANDN(1024,1);lpfout = lpfilter(输入);allpoleout = allpole(lpfout);AllPassOut = AllPass(LPFOUT);输出= AllPoleout + AllPassOut;[TFEOUTPUT,OUTPUTCOH] = TFE(输入,输出);TFeplotter(20 * log10(ABS(TFEOUTPUT)));Cherenceplotter(OutportoH);结束
第一张图显示了系统的幅值响应。第二幅图显示了系统输入和输出之间的相干估计。情节的连贯性按照预期的范围[0 1]变化。
使用FVTool的滤波器的幅度响应
过滤器是两个过滤器级的级联 - DSP.LowPassFilter和DSP.AllPassFilter和DSP.AllPolefilter的并行连接。所有过滤器对象都在其默认状态下使用。使用滤波器系数,导出系统传输函数并使用Freqz绘制频率响应。以下是[num] [den]格式中的系数:
所有杆滤波器 - [1 0] [1 0.1]
所有通过过滤器 - [0.5 -1 / sqrt(2)1] [1 -1 / sqrt(2)0.5]
低通滤波器 - 使用以下命令确定系数:
lpf = dsp.LowpassFilter;系数=多项式系数(lpf);
系数.Numerator以阵列格式给出系数。这里未显示整个系统传输功能的数学推导。派生传输功能后,运行FVTool,您可以看到以下频率响应:
FVTool显示的幅度响应与幅度响应相匹配dsp.transferfuncetionestimator.
对象的估计。
在Simulink中估计系统的传递函数,使用万博1manbetx离散传递函数估计块。该模块实现Welch的平均修正周期图方法,并使用测量的输入和输出数据进行估计。
该系统是两个过滤器级的级联:低通滤波器和Allpole滤波器和Allpass滤波器的并联连接。系统的输入是包含添加性白色高斯噪声的正弦波。噪声的平均值为零,标准偏差为0.1。估算器的输入是系统输入和系统输出。估计器的输出是系统的频率响应,其复杂。要提取此复杂估计的幅度部分,请使用腹肌块。要将结果转换为DB,系统使用一个DB(1欧姆)块。
打开并检查模型
要打开模型,请输入ex_transfer_function_estimator.
在MATLAB命令提示符中。
下面是模型中块的设置。
块 | 参数的变化 | 块的目的 |
---|---|---|
正弦波 |
|
频率为100hz的正弦信号 |
随机源 |
|
随机源块会生成随机噪声信号,其中包含通过块对话框指定的属性 |
低通滤波器 | 没有变化 | 低通滤波器 |
Allpole过滤器 | 没有变化 | 带系数的全极滤波器0.1 [1] |
离散滤波器 |
|
带系数的全通滤波器(1 /√(2)0.5] |
离散传递函数估计 |
|
传递函数估计 |
腹肌 | 没有变化 | 从传递函数估计器的输出中提取幅度信息 |
第一个阵列情节块 | 点击视图:
|
显示系统的幅度响应 |
二阵列情节块 | 点击视图:
|
显示一致性估计 |
默认情况下,x- 阵列图的轴在样本中。将此轴转换为频率,样本增量参数设置为FS / 1024.
.在本例中,该值为44100/1024
,或43.0664.
.对于双边光谱,x参数必须是- f / 2
.频率在范围内变化[-fs / 2 fs / 2]
.在本例中,阵列图显示了单侧频谱。因此,这是x设置为0.频率在范围内变化(0 f / 2)
.
运行模型
第一张图显示了系统的幅值响应。第二幅图显示了系统输入和输出之间的相干估计。情节的连贯性在范围上有所不同[0 1]
正如预期的那样。