这个例子显示一个理想采样信号及其幅度谱和相位谱,并可以修改参数。 此外还包括几个其他的信号。

主文件spy102.m

%初始化根窗体

clf reset;

set(gcf,'Units','pixels','position' ,[185 50 860 655],'name', '信号谱线分析',...

'numbertitle', 'off', 'Tag', 'dsp');

set(gcf, 'defaultuicontrolfontsize' ,12);

set(gcf, 'defaultuicontrolfontname' , ' 宋体 ' );

%添加组件

%三个axes,用来显示图像

labelTitle1 = uicontrol(gcf,'Style', 'text', 'String', '理想采样信号序列',...

'Position',[60 610 660 20], 'BackgroundColor', [.8 .8 .8]);

axesH1 = axes('Units','pixels','Position', [50 450 660 160]);

labelTitle2 = uicontrol(gcf,'Style', 'text', 'String', '理想采样信号的幅度谱',...

'Position', [60 405 660 20], 'BackgroundColor', [.8 .8 .8]);

axesH2 = axes('Units','pixels','Position', [50 240 660 160]);

labelTitle3 = uicontrol(gcf,'Style', 'text', 'String', '理想采样信号的相位谱',...

'Position', [60 195 660 20], 'BackgroundColor', [.8 .8 .8]);

axesH3 = axes('Units','pixels','Position', [50 30 660 160]);

%右侧编辑区域,包含几个用于画图的参数A、α、ω、T

labelTT = uicontrol(gcf,'Style', 'text', 'String', '理想采样信号','Position', [750 575 80 30],...

'BackgroundColor', [.8 .8 .8], 'FontSize', 10);

labelA = uicontrol(gcf,'Style', 'text', 'String', 'A','Position', [760 545 60 20],...

'BackgroundColor', [.8 .8 .8], 'FontSize', 10);

dataA = uicontrol(gcf,'Style', 'edit', 'String', '1','Position', [760 525 60 20], 'FontSize', 10);

labelAlpha = uicontrol('Style', 'text', 'String', 'α','Position', [760 470 60 20],...

'BackgroundColor', [.8 .8 .8], 'FontSize', 10);

dataAlpha = uicontrol(gcf,'Style', 'edit', 'String', '0.4','Position', [760 450 60 20], 'FontSize', 10);

labelW = uicontrol(gcf,'Style', 'text', 'String', 'ω','Position', [760 395 60 20],...

'BackgroundColor', [.8 .8 .8], 'FontSize', 10);

dataW = uicontrol(gcf,'Style', 'edit', 'String', '2.0734','Position', [760 375 60 20], 'FontSize', 10);

labelT = uicontrol(gcf,'Style', 'text', 'String', 'T','Position', [760 320 60 20],...

'BackgroundColor', [.8 .8 .8], 'FontSize', 10);

dataT = uicontrol(gcf,'Style', 'edit', 'String', '1','Position', [760 300 60 20], 'FontSize', 10);

%用于更改图像的按钮

btnH = uicontrol(gcf,'Style', 'pushbutton', 'String', 'Plot',...

'Position', [755 240 70 25], 'FontSize', 10);

%列表框,用于显示其他几种图形

labelOt = uicontrol(gcf,'Style', 'text', 'String', '其他','Position', [743 180 100 20],...

'BackgroundColor', [.8 .8 .8], 'FontSize', 10);

listboxH = uicontrol(gcf,'Style', 'listbox', 'String', {'单位脉冲序列';'矩形序列';'特定冲击串';'卷机计算';'卷积定律验证'},...

'Position', [743 80 100 80], 'FontSize', 10);

%设置回叫函数和初始化图像显示

set(btnH,'Callback', 'btnCall(axesH1,axesH2,axesH3,dataA,dataAlpha,dataW,dataT,labelTitle1,labelTitle2,labelTitle3)');

set(listboxH,'Callback', 'listboxCall(listboxH,axesH1,axesH2,axesH3,labelTitle1,labelTitle2,labelTitle3)');

btnCall(axesH1,axesH2,axesH3,dataA,dataAlpha,dataW,dataT,labelTitle1,labelTitle2,labelTitle3);

btnCall.m

function varargout = btnCall(axesH1,axesH2,axesH3,dataA,dataAlpha,dataW,dataT,labelTitle1,labelTitle2,labelTitle3)

%BTNH_CALLBACK Summary of this function goes here

% Detailed explanation goes here

A = str2double(get(dataA,'String'));

a = str2double(get(dataAlpha,'String'));

w0 = str2double(get(dataW,'String'));

T = str2double(get(dataT,'String'));

%信号曲线

n=0:50;

x=A*exp(-a*n*T).*sin(w0*n*T);

stem(axesH1,n,x);

set(axesH1,'XGrid','on','YGrid','on');

set(labelTitle1,'String','理想采样信号序列');

%幅度谱

k=-25:25;

W=(pi/12.5)*k;

X=x*(exp(-j*pi/12.5)).^(n'*k);

magX=abs(X);

stem(axesH2,magX);

set(axesH2,'XGrid','on','YGrid','on');

set(labelTitle2,'String','理想采样信号的幅度谱');

%相位谱

angX=angle(X);

stem(axesH3,angX);

set(axesH3,'XGrid','on','YGrid','on');

set(labelTitle3,'String','理想采样信号的相位谱');

function varargout = listboxCall(listboxH,axesH1,axesH2,axesH3,labelTitle1,labelTitle2,labelTitle3)

value = get(listboxH,'Value');

%判断选中的值,显示相应的图形

if value==1

uis(axesH1,axesH2,axesH3,labelTitle1,labelTitle2,labelTitle3);

elseif value==2

recs(axesH1,axesH2,axesH3,labelTitle1,labelTitle2,labelTitle3);

elseif value==3

maic(axesH1,axesH2,axesH3,labelTitle1,labelTitle2,labelTitle3);

elseif value==4

convo(axesH1,axesH2,axesH3,labelTitle1,labelTitle2,labelTitle3);

elseif value==5

conlc(axesH1,axesH2,axesH3,labelTitle1,labelTitle2,labelTitle3);

end

%单位脉冲序列

function uis(axesH1,axesH2,axesH3,labelTitle1,labelTitle2,labelTitle3)

n=1:50;

x=zeros(1,50);

x(1)=1;

%信号曲线

stem(axesH1,n,x);

set(axesH1,'XGrid','on','YGrid','on');

set(labelTitle1,'String','单位脉冲序列');

%幅度谱

k=-25:25;

X=x*(exp(-j*pi/12.5)).^(n'*k);

magX=abs(X);

stem(axesH2,magX);

set(axesH2,'XGrid','on','YGrid','on');

set(labelTitle2,'String','单位冲击信号的幅度谱');

%相位谱

angX=angle(X);

stem(axesH3,angX);

set(axesH3,'XGrid','on','YGrid','on');

set(labelTitle3,'String','单位冲击信号的相位谱');

%矩形序列

function recs(axesH1,axesH2,axesH3,labelTitle1,labelTitle2,labelTitle3)

n=1:5;

x=sign(sign(10-n)+1);

%信号曲线

stem(axesH1,n,x);

set(axesH1,'XGrid','on','YGrid','on');

set(labelTitle1,'String','矩形序列');

%幅度谱

k=-25:25;

X=x*(exp(-j*pi/25)).^(n'*k);

magX=abs(X);

stem(axesH2,magX);

set(axesH2,'XGrid','on','YGrid','on');

set(labelTitle2,'String','矩形序列的幅度谱');

%相位谱

angX=angle(X);

stem(axesH3,angX);

set(axesH3,'XGrid','on','YGrid','on');

set(labelTitle3,'String','矩形序列的相位谱');

%特定冲击串序列

function maic(axesH1,axesH2,axesH3,labelTitle1,labelTitle2,labelTitle3)

n=1:50; % 义序列的长度是50

x=zeros(1,50); %注意:MATLAB 中数组下标从1 始

x(1)=1;

x(2)=2.5;

x(3)=2.5;

x(4)=1;

%信号曲线

stem(axesH1,n,x);

set(axesH1,'XGrid','on','YGrid','on');

set(labelTitle1,'String','特定冲击串序列n(x)=δ(n)+2.5δ(n-1)+2.5δ(n-2)+δ(n-3)');

%特定冲击串序列的幅度谱

k=-25:25;

X=x*(exp(-j*pi/12.5)).^(n'*k);

magX=abs(X); %绘制x(n) 的幅度谱

stem(axesH2,magX);

set(axesH2,'XGrid','on','YGrid','on');

set(labelTitle2,'String','特定冲击串序列的幅度谱');

%特定冲击串序列的相位谱

angX=angle(X); %绘制x(n) 的相位谱

stem(axesH3,angX);

set(axesH3,'XGrid','on','YGrid','on');

set(labelTitle3,'String','特定冲击串序列的相位谱');

%卷机计算

function convo(axesH1,axesH2,axesH3,labelTitle1,labelTitle2,labelTitle3)

n=1:50; % 义序列的长度是50

hb=zeros(1,50); %注意:MATLAB 中数组下标从1 始

hb(1)=1; hb(2)=2.5; hb(3)=2.5; hb(4)=1;

%系统h[n]

stem(axesH1,hb);

set(axesH1,'XGrid','on','YGrid','on');

set(labelTitle1,'String','系统hb[n]');

%输入信号x[n]

m=1:50; T=0.001; % 义序列的长度是和采样率

A=444.128; a=50*sqrt(2.0)*pi; %设置信号有关的参数

w0=50*sqrt(2.0)*pi;

x=A*exp(-a*m*T).*sin(w0*m*T); %pi 是MATLAB 义的π,信号乘可采用“.*”

stem(axesH2,magX);

set(axesH2,'XGrid','on','YGrid','on');

set(labelTitle2,'String','输入信号x[n]');

%输出信号y[n]

y=conv(x,hb);

stem(axesH3,angX);

set(axesH3,'XGrid','on','YGrid','on');

set(labelTitle3,'String','输出信号y[n]');

%卷积定律验证

function conlc(axesH1,axesH2,axesH3,labelTitle1,labelTitle2,labelTitle3)

figure(2);

n=1:50; % 义序列的长度是50

hb=zeros(1,50); %注意:MATLAB 中数组下标从1 始

hb(1)=1; hb(2)=2.5; hb(3)=2.5; hb(4)=1;

subplot(3,1,1);stem(hb);

title( '系统hb[n]');

m=1:50; T=0.001; % 义序列的长度是和采样率

A=444.128; a=50*sqrt(2.0)*pi; %设置信号有关的参数

w0=50*sqrt(2.0)*pi;

x=A*exp(-a*m*T).*sin(w0*m*T);

k=-25:25; X=x*(exp(-j*pi/12.5)).^(n'*k);

magX=abs(X); %绘制x(n) 的幅度谱

subplot(3,2,1);stem(magX);title('输入信号的幅度谱');

angX=angle(X); %绘制x(n) 的相位谱

subplot(3,2,2);stem(angX) ; title ('输入信号的相位谱')

Hb=hb*(exp(-j*pi/12.5)).^(n'*k);

magHb=abs(Hb); %绘制hb(n) 的幅度谱

subplot(3,2,3);stem(magHb);title( '系统响应的幅度谱');

angHb=angle(Hb); %绘制hb(n) 的相位谱

subplot(3,2,4);stem(angHb) ; title ( '系统响应的相位谱')

n=1:99; k=1:99;

y=conv(x,hb);

Y=y*(exp(-j*pi/12.5)).^(n'*k);

magY=abs(Y); %绘制y(n) 的幅度谱

subplot(3,2,5);stem(magY);title('输出信号的幅度谱');

angY=angle(Y); %绘制y(n) 的相位谱

subplot(3,2,6);stem(angY) ; title ('输出信号的相位谱')

%以下将验证的结果显示

figure(3);

XHb=X.*Hb;

subplot(2,1,1);stem(abs(XHb));title( 'x(n) 的幅度谱与hb(n)幅度谱相乘');

subplot(2,1,2);stem(abs(Y));title( 'y(n) 的幅度谱');

axis([0,60,0,8000])

matlab里uicontrol的用法,Matlab uicontrol举例相关推荐

  1. matlab里randn是什么,matlab中randn函数用法

    matlab中randn函数用法 MATLAB 中的randn函数 matlab函数 randn:产生正态分布的随机数或矩阵的函数 randn:产生均值为0,方差σ^2 = 1,标准差σ = 1的正态 ...

  2. matlab里脚本循环语句,Matlab中while循环语句的用

    Matlab 中while循环语句的用法? matlab while循环的用法.while循环的使用与for循环是类似的.但是其中还是有不少的区别,例如对于循环次数而言,while循环的次数是不定的, ...

  3. matlab fopen函数的用法,matlab中关于fread函数的用法

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:matlab中关于fread函数的用法 问题详情:用fread打开一个时,需要不需要把开放在某个特回答:必须在Matlab可以搜索的 ...

  4. matlab里simulink,如何运用MATLAB中的Simulink?

    摘要:文中首先分析了MATLAB/Simulink中DSP Builder模块库在FPGA设计中优点,然后结合FSK信号的产生原理,给出了如何利用DSP Builder模块库建立FSK信号发生器模型, ...

  5. matlab中linspace的用法,matlab中的一些基本使用方法(持续添加)

    MATLAB中的常用清除命令 1.clc命令:即可清空命令窗口中的内容. 2.clf命令:清除当前figure中的内容. 3.close命令:关闭当前打开的figure图形界面. 4.clear命令: ...

  6. matlab里H是什么,matlab 中 hObject和handles区别

    h:指回调函数被调用对象的句柄:handles:是包含GUI中所有组件句柄的结构体,该结构体的域名由对象的TAG属性定义.也可以用来传递数据给其他的回调函数和主程序. 例如:创建一个包含button的 ...

  7. matlab中等号的用法,matlab中“==”两个等号连一块是啥意思?怎么用?

    www.mh456.com防采集. a=5 % 给变量a赋值a==5 % 逻辑判断,变量a是否等于5,如果是则返回1,否则返回0.追问M=max(DeD);for i=1:M+1; %网络图中节点的度 ...

  8. matlab里tao怎么输入,matlab怎么运行程序

    本文收集整理关于matlab怎么运行程序的相关议题,使用内容导航快速到达. 内容导航: Q1:如何运行matlab程序 大哥你少了个赋值的运算,你的运行环境没错,就如楼上的,但是你想看的是结果.数据空 ...

  9. matlab里符号的写法,Matlab中特殊符号的写法

    Matlab的figure中输入上标.下标.特殊符号或字体 坐标轴标注: 1. 控制坐标轴尺度长度:set(gca,'XLim',[-pi/2 pi]) 2. 定制自己想标注的刻度: (1)set(g ...

  10. matlab里用fix函数,Matlab基本函数-fix函数

    1.fix函数:向零方向取整 2.用法说明:y=fix(x) 函数将x中元素零方向取整,得到y是一个整数数组.对于复数z,分别对实部和虚部取整 3.举例说明 >> x = [1-2.9i ...

最新文章

  1. Android studio无法连接识别检测各种模拟器和手机的问题 (万能方案)。
  2. scope python_Python标准库Scope
  3. CodeForces 572A,B,C
  4. 红帽Redhat网络功能虚拟化产品指南、规划和配置指南
  5. Vue 项目在 IE11 中数据更改后页面数据无变化
  6. C# string转Intptr Intptr转string
  7. 北理工计算机学院新闻,新闻睇睇睇 | 计算机学院举办第八届ACM/ICPC程序设计竞赛校内选拔赛暨北理工邀请赛...
  8. 集线器、交换机和网桥三者有什么区别
  9. 我爱淘二次冲刺阶段4
  10. 7-4 韩信点兵 (10 分)
  11. vs 应用程序无法正常启动0xc000007b 可能与VS中DLL引用有关
  12. 数据库期末大作业:机票预定信息系统数据库设计与实现
  13. 【Android -- 架构】MVP 模式
  14. 基于springboot+vue的戒毒所人员管理系统 毕业设计-附源码251514
  15. android 监听锁屏 权限,Android中监听锁屏变化和防止锁屏
  16. IDEA修改默认的新建项目路径
  17. 2019-详细Android Studio开发百度地图(4)—百度地图_路线规划的实现
  18. 如何扛住游戏流量高峰?Evil Dead 主创这样说
  19. PageHelper这种情况下有坑!
  20. PTP时间同步概念简介

热门文章

  1. 狗猫分类数据集划分详解
  2. TarBase:有实验数据支持的miRNA靶基因数据库
  3. a6账套管理显示无法连接服务器,航天A6基础版简单建账实施流程
  4. Excel单个单元格内逗号分割的字符串去重
  5. axure文件如何加密_Axure发布到AxShare的加密与非加密方案 | 人人都是产品经理
  6. linux中wifi抓取包,使用wireshark捕获wifi包(linux)
  7. Mimics三维建模
  8. matlab weibpdf函数,MATLAB常用函数
  9. 西门子PLC模拟电压采集
  10. 虚拟机中Linux安装可视化界面