这是机器翻译
鼠标悬停文本以查看原文。点击下面的按钮,返回该页面的英文版本。未知系统传递函数的估计
根据一个未知系统的测量输入和输出数据,可以估计出该系统的传递函数。
在DSP系统工具箱™中,您可以使用dsp。TransferFunctionEstimator
MATLAB中的系统对象™®和离散传递函数估计Simulink中金宝app的块®.输入之间的关系x和输出y是由线性时不变传递函数建模的吗Txy.传递函数是交叉功率谱密度的比值x而且y,Pyx的功率谱密度x,Pxx:
的dsp。TransferFunctionEstimator
对象和离散传递函数估计块使用Welch的平均周期图方法来计算Pxx而且Pxy.有关此方法的详细信息,请参见光谱分析.
一致性
相干性,或者说量级平方相干性x而且y定义为:
相干函数估计你可以预测的程度y从x.相干性值在0≤范围内Cxy(f)≤1。如果Cxy= 0,输入x和输出y是不相关的。一个Cxy取值大于0小于1表示以下情况之一:
测量是有噪声的。
这个系统是非线性的。
输出y是一个函数x还有其他的输入。
线性系统的相干性表示输入在该频率下产生的输出信号功率的小数部分。对于一个特定的频率,1 -Cxy是输入不影响输出的分数次幂的估计值。
当你设置OutputCoherence
的属性dsp。TransferFunctionEstimator
来真正的
,计算输出相干性。在离散传递函数估计块,计算相干谱,选择输出幅值平方相干估计复选框。
在MATLAB中估计传递函数
在MATLAB中估计一个系统的传递函数,使用dsp。TransferFunctionEstimator
系统对象。该对象采用Welch平均修正周期图法,利用实测的输入输出数据进行估计。
初始化系统
该系统是两个过滤级联:dsp。LowpassFilter
和一个平行的连接dsp。一个llpassFilter
而且dsp。一个llpoleFilter
.
allpole = sp. allpolefilter;allpass = sp. allpassfilter;lpfilter = dsp.LowpassFilter;
指定信号源
系统的输入是一个频率为100hz的正弦波。采样频率为44.1 kHz。
sin = dsp。SineWave (“频率”, 100,“SampleRate”, 44100,...“SamplesPerFrame”, 1024);
创建传递函数估计器
为了估计系统的传递函数,创建dsp。TransferFunctionEstimator
系统对象。
Tfe = dsp。TransferFunctionEstimator(“FrequencyRange”,“单向的”,...“OutputCoherence”,真正的);
创建阵列图
初始化两个dsp。一个rrayPlot
对象:一个显示系统的震级响应,另一个显示输入和输出之间的相干估计。
Tfeplotter = dsp。ArrayPlot (“PlotType”,“行”,...“包含”,的频率(赫兹),...“YLabel”,“震级响应(dB)”,...“YLimits”20 [-120],...“XOffset”0,...“包含”,的频率(赫兹),...“标题”,“系统传递函数”,...“SampleIncrement”, 44100/1024);Coherenceplotter = dsp。ArrayPlot (“PlotType”,“行”,...“YLimits”, 1.2 [0],...“YLabel”,“一致性”,...“XOffset”0,...“包含”,的频率(赫兹),...“标题”,的一致性估计,...“SampleIncrement”, 44100/1024);
默认情况下,x-轴的数组图在样本中。的“SampleIncrement”属性可将此轴转换为频率dsp。一个rrayPlot
对象.在本例中,该值为44100/1024或43.0664。对于双面光谱,XOffset
的属性dsp。一个rrayPlot
object必须是-_Fs_/2。频率在[-_Fs_/2]的范围内变化Fs/ 2)。在本例中,阵列图显示了单侧光谱。因此,设置XOffset
为0。频率在[0]的范围内变化Fs/ 2)。
传递函数的估计
传递函数估计器接受两个信号:两级滤波器的输入信号和两级滤波器的输出信号。滤波器的输入是一个包含加性高斯白噪声的正弦波。噪声的均值为零,标准差为0.1。估计器估计两级滤波器的传递函数。估计器的输出是滤波器的频率响应,这是复杂的。要提取此复估计的大小部分,请使用腹肌
函数。要将结果转换为dB,应用转换因子20*log10(量级)。
为Iter = 1:1000 input = sin () + .1*randn(1024,1);Lpfout = lpfilter(输入);Allpoleout = allpole(lpfout);Allpassout = allpass(lpfout);输出= allpoleout + allpassout;[tfeoutput,outputcoh] = tfe(输入,输出);tfeplotter (20 * log10 (abs (tfeoutput)));coherenceplotter (outputcoh);结束
第一个图显示了系统的量级响应。第二个图显示了系统输入和输出之间的相干性估计。正如预期的那样,图中的相干性在[0 1]的范围内变化。
fvtool滤波器的幅值响应
该过滤器是两个过滤器级联dsp。LowpassFilter
和一个平行的连接dsp。一个llpassFilter
而且dsp。一个llpoleFilter
.所有筛选器对象都在默认状态下使用。利用滤波器系数,推导出系统传递函数,并绘制频率响应图freqz
.下面是[Num] [Den]格式的系数:
全极滤波器- [1 0][1 0.1]
全通过滤器-[0.5 -1/√(2)1][1 -1/√(2)0.5]
低通滤波器-使用以下命令确定系数:
lpf = dsp.LowpassFilter;系数= coeffs(lpf);
系数。分子
以数组格式给出系数。这里没有给出整个系统传递函数的数学推导。一旦你推导出传递函数,运行fvtool,你可以看到下面的频率响应:
fvtool显示的震级响应与dsp。TransferFunctionEstimator
对象的估计。
在Simulink中估计传递函数金宝app
在Simulink中估计一个系统的传递函数,使用离散传递函数估计块。金宝app该模块采用Welch平均修正周期图法,利用测量的输入输出数据进行估计。
该系统是两个滤波器级联:一个低通滤波器和一个全极滤波器和全通滤波器的并联。系统的输入是一个包含加性高斯白噪声的正弦波。噪声的均值为零,标准差为0.1。估计器的输入是系统输入和系统输出。估计器的输出是系统的频率响应,是复杂的。要提取这个复杂估计的大小部分,请使用Abs块。为了将结果转换为dB,系统使用dB(1欧姆)块。
打开并检查模型
要打开模型,请输入ex_transfer_function_estimator
在MATLAB命令提示符中。
下面是模型中块的设置。
块 | 参数的变化 | 区块的用途 |
---|---|---|
正弦波 |
|
频率为100赫兹的正弦信号 |
随机源 |
|
随机源块生成一个随机噪声信号,其属性通过块对话框指定 |
低通滤波器 | 没有变化 | 低通滤波器 |
Allpole过滤器 | 没有变化 | 带系数的全极滤波器0.1 [1] |
离散滤波器 |
|
带系数的全通滤波器(1 /√(2)0.5] |
离散传递函数估计 |
|
传递函数估计器 |
腹肌 | 没有变化 | 从传递函数估计器的输出中提取幅值信息 |
第一个阵列Plot块 | 点击视图:
|
显示系统的幅值响应 |
第二阵列图块 | 点击视图:
|
显示相干估计 |
默认情况下,x-轴的数组图在样本中。把这个轴转换成频率,用样本增量参数设置为Fs / 1024
.在本例中,该值为44100/1024
,或43.0664
.对于双面光谱,x参数必须为- f / 2
.频率在范围内变化[Fs / Fs / 2)
.在本例中,阵列图显示了单侧光谱。因此,x设置为0。频率在范围内变化(0 f / 2)
.
运行模型
第一个图显示了系统的量级响应。第二个图显示了系统输入和输出之间的相干性估计。情节的连贯性在范围内变化[0 1]
像预期的那样。