matlab app designer做数字信号频谱图2

此篇在上一篇的基础上增加波形合成功能。涉及到matlab app designer的多窗口传参调用;UITable表应用(writetable,readtable存取数据;在table数据中获取其中的某个double类型数据;获取鼠标点击的位置在表中的行列数,以进行删除操作;表已有数据的行数等)

正文___________________________________

上一篇写到指定长度,幅度,频率,采样频率后选择数据源(正弦波,方波,三角波,随机波形)点击生成按钮可以生成对应时域图以及对应频谱图。现在添加一个功能:数据源下拉框添加选项波形合成,此时点击生成按钮则打开波形合成新窗口如下图:

24f56d9313814c06a25e0202bca705b3.jpg

 调用此界面的主界面代码为:d98c037107ea429982f96bd1a9a37de7.jpg

这里传了四个参数对应waveform_Synthesis.mlapp的startupFcn函数的四个参数(点击工具栏编辑器 →App输入参数进入startupFcn函数参数设置):ad52d8b997004699aa2da0173d3d475b.jpg

 点击加入固定频率按钮则将波形的三个参数频率幅度相位添加到左边表格中。对应函数如下46c474794402413ca5701e9bef05c0af.jpg

 ,此时如果想删除刚添加的某个波形,则用表格单击函数(获取鼠标点击位置对应表格的行数,对其进行删除)5ec598af0e184632ac38b4cf036e6db9.jpg

 单击某行后点击按钮“删除该波形”1a6ff4d8041b428695072919bfac4f9a.jpg

 其中选中位置是为了解决删除最后一行数据后表格并没有刷新,所以在删除数据后加上判断此时表格数据行数是否为0,为0则用一个空table数据给表格赋值,以实现清空表格数据效果。

点击“删除所有波形”按钮则为dc7566fcc6c24c91a714a7f9e423a338.jpg

 添加波形完毕后点击确定按钮8751ff9d039e4a22b47a6d285e090e3d.jpg

 使用writetable将表格数据写入xls文件中,以便下次读取记录。

func_updateWave函数在主界面代码中定义为公有函数be07891b20364e75a62235566b54425a.jpg

 使用for循环将传进来的表格数据data一行一行读出来并分解赋值。F=data(i,2);得到第i行第2列的值,得到的F类型为table类型,其中的数值类型为double。使用table2cell函数将table类型转为cell,再用cell2mat函数将cell类型转为double类型,就得到频率f,代入A*sin(2*pi*f*t+p);再用函数func_plotWave7c7a197745c349b8b6dd8c0599cd9e27.jpg

画出对应时域图和频谱图。 

更新________________________________________

由于在某些采样率和采样长度下计算出的最大频谱位置与实际信号频率不一致(频率泄露)。遂考虑对信号进行加窗补零操作如下134b1732d19e4bf38f9b9a393a55106d.jpg

 在对应位置进行调用33b3d0c022e2446abf27a88f8d069036.jpg

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值