频谱分析过程中的混叠现象、栅栏现象和泄漏现象

一、混叠现象

信号x(t)经DFT计算出频谱X(k),它是X(jw)周期化的采样值,如果连续信号x(t)不是带限信号,或者采样频率不满足采样定理,在连续信号离散化时,就会出现信号频谱的混叠。
要解决连续信号x(t)离散化过程中的频谱混叠,主要有两种方法:①对于带限连续信号,只需提高采样频率使之满足时域采样定理;②对于非带限连续信号,可根据实际信号对其进行抗混叠滤波(通过一个低通滤波器),使之成为带限信号。
工程实际中的连续信号一般都不是带限信号,连续信号在采样前通常都经过一个模拟低通滤波器(又称为抗混叠滤波器)进行低通滤波,以减小混叠误差。低通滤波器的截止频率应该满足

使采样频率大于信号最高频率的2倍,或信号的最高频率小于奈奎斯特频率,以满足采样定理。

二、栅栏现象

栅栏现象,也称栅栏效应,对一函数实行采样,即是抽取采样点上的对应的函数值。其效果如同透过栅栏的缝隙观看外景一样,只有落在缝隙前的少数景象被看到,其余景象均被栅栏挡住而视为零,这种现象称为栅栏效应。

DFT得到的频谱X(k)只能是非周期信号连续频谱X(jo)上的有限离散频点上的采样值。由于X(k)是离散序列,因而无法反映采样点之间的细节,就如同隔着百叶窗观察窗外的景色一样,这种现象称为栅栏现象。栅栏现象是利用DFT分析非周期信号连续频谱过程中无法克服的现象,有时频谱中的某些重要信息恰好就在取样点之间,将被错过而检测不到。为了改善栅栏现象,把被“栅栏”挡住的频谱分量检测出来,可在原记录序列后面补零以增加DFT的长度,即增加频域X(k)上的采样点数N,改变离散谱线的分布,就可能检测出原来看不到的频谱分量,如下图所示。在图中通过DTFT得到的信号频谱用灰色线表示,图中用垂直黑线画出了通过FFT得到的谱线,是DTFT频谱离散频点的采样值,可明显看到在两条谱线中间的一些频谱特性没有反映出来。

不管是时域采样还是频域采样,都有相应的栅栏效应。只是当时域采样满足采样定理时,栅栏效应不会有什么影响。而频域采样的栅栏效应则影响很大,“挡住”或丢失的频率成分有可能是重要的或具有特征的成分,使信号处理失去意义。减小栅栏效应可用提高采样间隔也就是频率分辨力的方法来解决。间隔小,频率分辨力高,被“挡住”或丢失的频率成分就会越少。但会增加采样点数,使计算工作量增加。解决此项矛盾可以采用如下方法:在满足采样定理的前提下,采用频率细化技术(ZOOM),亦可用把时域序列变换成频谱序列的方法。 

三、泄露现象 

对于连续信号的采样序列进行DFT运算,由于时间长度取有限值,即将信号截断,使信号的带宽被扩展了,这种现象称为泄漏。下面讨论泄漏是如何产生的。
设有一个连续的单一频率信号

由傅里叶变换可知,正弦和余弦的傅里叶变换对为

由于窗函数是对称的,得到XT(a)是实函数。这时可以看到式(2-2-21)与式(2-2-17)的区别:在式(2-2-17)中,连续信号的傅里叶变换只在w。处有一个δ函数,但当连续信号被截断并离散化以后(用式(2-2-21)表示),信号的谱线已不限于一个δ函数,而是扩散了,即由于对连续信号截断(加窗)而出现泄漏现象,下图所示。

参考文献:MATLAB数字信号处理85个实用案例精讲——入门到进阶;宋知用(编著)

  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是基于Vue3+Ts版本的配置化表单基础组件的实现方式: 1. 在组件引入表单配置项和表单数据对象: ```vue <template> <el-form :model="formData" :rules="rules" ref="form" label-width="100px"> <el-row :gutter="20"> <el-col :span="item.span" v-for="(item, index) in formConfig" :key="index"> <component :is="item.type" :config="item" :formData="formData"></component> </el-col> </el-row> </el-form> </template> <script> import { defineComponent, ref } from 'vue'; import { ElForm, ElRow, ElCol } from 'element-plus'; import { FormConfig, FormData } from './types'; import FormItem from './FormItem.vue'; export default defineComponent({ name: 'ConfigForm', components: { ElForm, ElRow, ElCol, FormItem, }, props: { formConfig: { type: Array as () => FormConfig[], required: true, }, formData: { type: Object as () => FormData, required: true, }, rules: { type: Object, default: () => ({}), }, }, }); </script> ``` 2. 在表单配置项定义每个表单项的类型、名称、校验规则等信息: ```vue <script lang="ts"> import { defineComponent } from 'vue'; import { FormItemConfig } from './types'; import { ElInput, ElSelect } from 'element-plus'; export default defineComponent({ name: 'FormItem', components: { ElInput, ElSelect, }, props: { config: { type: Object as () => FormItemConfig, required: true, }, formData: { type: Object, required: true, }, }, computed: { isSelect() { return this.config.type === 'select'; }, }, methods: { handleChange(value: any) { this.$emit('change', value); }, }, }); </script> ``` 3. 在表单项组件根据表单配置项的类型渲染不同的表单项: ```vue <template> <component :is="isSelect ? 'el-select' : 'el-input'" v-model="formData[config.name]" :placeholder="config.placeholder" :disabled="config.disabled" :options="config.options" @change="handleChange"></component> </template> ``` 4. 在父组件使用表单组件并传入表单配置项和表单数据对象: ```vue <template> <config-form :form-config="formConfig" :form-data="formData" :rules="rules"></config-form> </template> <script lang="ts"> import { defineComponent, ref } from 'vue'; import ConfigForm from './ConfigForm.vue'; import { FormConfig, FormData } from './types'; export default defineComponent({ name: 'App', components: { ConfigForm, }, setup() { const formData = ref({ name: '', age: '', gender: '', }); const formConfig: FormConfig[] = [ { type: 'input', name: 'name', label: '姓名', placeholder: '请输入姓名', span: 8, rules: [{ required: true, message: '请输入姓名', trigger: 'blur' }], }, { type: 'input', name: 'age', label: '年龄', placeholder: '请输入年龄', span: 8, rules: [{ required: true, message: '请输入年龄', trigger: 'blur' }], }, { type: 'select', name: 'gender', label: '性别', placeholder: '请选择性别', span: 8, options: [ { label: '男', value: 'male' }, { label: '女', value: 'female' }, ], rules: [{ required: true, message: '请选择性别', trigger: 'change' }], }, ]; const rules = { name: [{ required: true, message: '请输入姓名', trigger: 'blur' }], age: [{ required: true, message: '请输入年龄', trigger: 'blur' }], gender: [{ required: true, message: '请选择性别', trigger: 'change' }], }; return { formData, formConfig, rules, }; }, }); </script> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值