信号实验(03)连续时间系统的频域分析

2023-11-02

信号实验(03)连续时间系统的频域分析

一.基础知识

1.1.数值积分

y=quadl('func', a, b)
% a、b 分别表示定积分的下限和上限
y=quadl(@myfun, a, b)

1.2.傅里叶变换和逆变换

% 要用到符号运算
fourier()
ifourier()

1.3.频率响应

freqs(b, a, w)
% b 为系统频率响应函数有理多项式中分子多项式的系数向量
% a 为分母多项式的系数向量,或微分方程左式的系数
% w 为需计算的系统频率响应的频率抽样点向量

二.例子

2.1.矩形信号

给定一个周期为 4、脉冲宽度为 2 的矩形信号,用 Matlab 计算其傅里叶
系数并绘图。(教材 p193,习题 4.7 第 a 小题)

T = 4;
tao = 2;
w = 2 * pi / T;
a0 = quadl(@singrect, -2, 2) * 2 / T; %  计算 a0
N = 10;
an = zeros(1, N);
bn = zeros(1, N);

for k = 1:N
    an(k) = quadl(@rectcos, -2, 2, [], [], k, w) * 2 / T;
    %  计算 an. quadl  中的[], [] 表示以默认精度进行数值积分,k ,w  为
    % rectcos  函数中的后两个参数;
    bn(k) = quadl(@rectsin, -2, 2, [], [], k, w) * 2 / T; % 计算 bn;
end

n = 1:1:N;
figure(1);
subplot(1, 2, 1); plot(n, an, '-o'); grid on;
subplot(1, 2, 2); plot(n, bn, '-o'); grid on;
t = -6:0.01:6;
x = pulstran(t, -8:4:8, 'rectpuls', 2);
% 生成周期矩形脉冲信号
figure(2);
subplot(6, 2, 1);
plot(t, x);
axis([-8, 8, -1, 2]);
grid on;
%  有限项级数逼近
A0 = a0;
subplot(6, 2, 2);
plot(t, A0 / 2);
grid on; % 直流项
wave = a0 / 2;

for k = 1:10
    wave = wave + an(k) * cos(k * w * t) + bn(k) * sin(k * w * t);
    subplot(6, 2, k + 2);
    plot(t, wave);
    grid on;
end

2.2.门函数

给定一个宽度为 2 的门函数信号,用 Matlab 计算其傅里叶变换(教材p138,例题 4.4-1)及其性质并实现信号幅度调制。

R = 0.005; t = -2:R:2;
%R  为时域采样间隔
f = (abs(t) <= 1);
% f  为时域

w1 = 40;
N = 1000;
k = -N:N;
w = k * w1 / N;
% w1  为角频率范围, N 为 为 采样点 数, ,w  为频率正半轴 采样点
F = f * exp(-j * t' * w) * R;
%  利用 向量内积相乘 ,求 求 F(jw), , 原理参见附录

%  求幅频特性
Fudu = real(F);
figure(1);
subplot(2, 1, 1);
plot(t, f);
xlabel('t');
ylabel('f(t)');
grid on;
subplot(2, 1, 2);
plot(w, Fudu);
xlabel('w');
ylabel('F(jw)');
grid on;

% 尺度变换
sf = (abs(t) <= 0.5); % sf  代表 f(2t)
w1 = 40; N = 1000;
k = -N:N;
w = k * w1 / N;
%w1  为角频率范围,为 采样点为 N ,w  为频率正半轴采样点
SF = sf * exp(-j * t' * w) * R;
%  利用 向量内积相乘 ,求 求 SF(jw).  原理参见附录
SFudu = real(SF); %  求幅频特性
figure(2);
subplot(2, 1, 1);
plot(t, sf);
xlabel('t');
ylabel('sf(t)');
grid on;
subplot(2, 1, 2);
plot(w, SFudu);
xlabel('w');
ylabel('SF(jw)');
grid on;

% 信号调制
mf = f .* cos(10 * pi * t); % mf  为已 调制 函数
figure(3);
subplot(3, 1, 1);
plot(t, cos(10 * pi * t)); %  绘制载波信号
ylabel('y(t)=cos(10*pi*t)');
grid on;
subplot(3, 1, 2);
plot(t, mf); %  绘制已 调制 信号
ylabel('f1(t)=f(t)*cos(10*pi*t)');
grid on;
MF = mf * exp(-j * t' * w) * R; % 求 求 已 调制谱 信号的频谱 F1(jw)
MFudu = real(MF); % 求 求 F1(jw) 的幅频特性
subplot(3, 1, 3);
plot(w, MFudu);
xlabel('w');
ylabel('MF(jw)');
grid on;

从上图可以看出,信号调制后其频谱分别向左和右搬移了 10   ,而其幅度
谱的形式并未改变

2.3.频率响应

给求下列微分方程所描述系统的频率响应 H ( j ω ) H(j\omega) H(jω) ,并画出其幅频、相频
响应曲线:
y ′ ′ ( t ) + 5 y ′ ( t ) + 6 y ( t ) = f ′ ( t ) + 4 f ( t ) y''(t)+5y'(t)+6y(t)=f'(t)+4f(t) y(t)+5y(t)+6y(t)=f(t)+4f(t)

b = [1 4];
a = [1 5 6];
w = linspace(0, 5, 200);
H = freqs(b, a, w);
figure(1);

subplot(2, 1, 1);
plot(w, abs(H));
xlabel('\omega');
ylabel('|H(j\omega)|');
grid on;

subplot(2, 1, 2);
plot(w, angle(H));
xlabel('\omega');
ylabel('\phi');
grid on;

三.实验

3.1.三角波傅里叶变换

周期性三角波如下图所示,计算其傅里叶级数系数,演示其有限项级数逼近并绘图。(教材 p193,习题 4.8 第 a 小题)

3.2.余弦函数傅里叶变换

3.3.三角波频谱

3.4.微分方程频率响应

四.思考题

  1. 在“实验内容与步骤”(1)中,采用三角函数和指数形式的的傅里叶分解有何不同,它们之间的关系是什么?采用不同项数的分解形式对原始函数进行逼近,效果有何不同?为什么?

  2. 综合考虑“实验内容与步骤”(2)和(3),比较傅氏变换时移和平移的不同效果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

信号实验(03)连续时间系统的频域分析 的相关文章

  • 以 2 为底的矩阵对数

    Logm 取矩阵对数 并且log2 取矩阵每个元素以 2 为底的对数 我正在尝试计算冯 诺依曼熵 它涉及以 2 为底的矩阵对数 我该怎么做呢 如果将 以 2 为底 的矩阵指数定义为B expm log 2 A 或者如果您类似地通过特征分解直
  • 获取向量幂的有效方法

    我编写了一个代码 在数值上使用勒让德多项式直至某个高 n 阶 例如 case 8 p 6435 x 8 12012 x 6 6930 x 4 1260 x 2 35 128 return case 9 如果向量x太长这会变得很慢 我发现说之
  • Matlab:3D 堆积条形图

    我正在尝试创建一个 3D 堆积条形图 如这个问题所示 Matlab 中的 3D 堆叠条形图 https stackoverflow com questions 13156133 3d stacked bars in matlab 5D 然而
  • 将 kinect RGB 和深度值转换为 XYZ 坐标

    我正在寻找一种简单的方法将 kinect RGB 和深度值转换为 XYZ 坐标 使用 MATLAB 我的目标是一个输入为以下内容的函数 每个点的 RGB 和深度值Kinect相机 并输出 每个点的 x y 和 z 值 RGB 深度 RGB
  • MATLAB 除法...29/128 应该返回 0 吗?

    我真的不认为这是一个精度问题 答案应该是0 226左右 这是确切的代码 val I i j bucketSize pos val bucketSize I只是我从中获取值的矩阵 以下是 MATLAB 的输出 val 29 bucketSiz
  • MATLAB - 通过垂直连接子矩阵重新排列矩阵

    我在执行以下任务时遇到问题 假设一个 3x6 矩阵 A 0 2787 0 2948 0 4635 0 8388 0 0627 0 0435 0 6917 0 1185 0 3660 0 1867 0 2383 0 7577 0 6179 0
  • MATLAB:将当前文件夹设置为脚本位置

    我在不同的文件夹中有一些脚本和数据 我使用addpath和相对路径经常 我的问题是 只有当我的当前文件夹是我执行的脚本所在的位置时 这才有效 例如 如果我执行添加路径 X 的脚本 A 然后执行位于路径 X 中的脚本 B 则 Matlab 不
  • matlab 中的动画绘图

    我正在尝试创建一个三角形的动画图 最终结果应该是十个三角形 后面跟着两个更大的三角形 后面跟着一条直线 使用matlab文档 https de mathworks com help matlab ref drawnow html 我最终得到
  • 如何在Matlab中将图像从笛卡尔坐标更改为极坐标?

    我正在尝试将图像的像素从 x y 坐标转换为极坐标 但我遇到了问题 因为我想自己编写该函数 这是我到目前为止所做的代码 function newImage PolarCartRot read and show the image image
  • 如何在matlab中使矩阵图平滑

    就像上图一样 怎样才能让画面更流畅呢 或者缩小y轴的范围 数据来自二维矩阵 然后我用plot data 请随意提出任何想法 平滑线条的一种方法涉及样本点之间数据的非线性插值 当你这样做时plot x y o http www mathwor
  • 将值从 C++ MEX 文件返回到 MATLAB

    我正在编写一个从 C 代码中检索数据的 MATLAB 程序 为此 我在 MATLAB 中创建了一个 MEX 文件和一个网关 mexFunction 虽然可以在 MATLAB 中读取读取值 但我无法检索它来使用它 如果不清楚 我有与这里完全相
  • 在 Matlab/Java 中将手部运动建模为 3D 曲线

    我只需要一些关于我遇到的问题 在哪里查看等的指导 我在我的一个项目中使用了运动跟踪手套 它返回每个手指和手掌的 X Y 和 Z 值 我想做的是首先根据这些坐标创建每个手指运动的表示 然后将它们每个附加到手掌的运动 以获得手的表示 一旦我完成
  • MATLAB 问题中的 Parfor

    为什么我不能使用parfor在这段代码中 parfor i 1 r for j 1 N r xr j N r i 1 x i r j 1 end end 这是错误 错误 parfor 中的变量 xr 无法分类 请参阅 MATLAB 中的并行
  • 使用正常数据直方图与直接公式进行熵估计(matlab)

    假设我们已经绘制了n 10000标准正态分布的样本 现在我想使用直方图计算其熵来计算概率 1 计算概率 例如使用matlab p x hist samples binnumbers area x 2 x 1 sum p p p area b
  • matlab中简单正弦波的傅里叶变换

    我尝试显示简单正弦波的频谱 因为我们知道具有固定频率的单个正弦波必须在其频谱中出现峰值我编写了这段代码 但我无法得到这个峰值我的代码中有什么问题 clc nsteps 200 number of signal elements in tim
  • MATLAB;具有 2+ 个/分割图例的饼图 R2017b

    我正在创建一个饼图 理想情况下希望图例水平显示在顶部和 或底部 然而 在几乎所有情况下 这是不可能的 因为图例超出了数字 因此 我理想情况下希望将图例分成两个 或更多 子图例并单独放置它们 我知道这不是 MATLAB 中的内置功能 我使用的
  • Python 中 Matlab 'fscanf' 的等价物是什么?

    Matlab函数fscanf 似乎很强大 python 或numpy 中是否有相同的等效项 具体来说 我想从文件中读取矩阵 但我不想迭代每一行来读取矩阵 类似的东西 来自 matlab 用于读取 2D 1000x1000 矩阵 matrix
  • 如何从列中创建对称矩阵?

    例如 我想转动以下列 90 175 600 650 655 660 代入矩阵 90 175 600 650 655 660 175 600 650 655 660 655 600 650 655 660 655 650 650 655 66
  • 可以避免迭代元胞数组时的“s{1} 烦恼”吗?

    The s 1 标题的 烦恼 指的是下面的 for 块中的第一行 for s some cell array s s 1 unpeel the enclosing cell do stuff with s end This s s 1 业务
  • UDP接收和发送Matlab

    我目前正在努力从外部设备接收数据包 然后将数据发送到另一个设备 我有一个工作 Simulink 模型 但我不知道如何在 Matlab 中对其进行编码 Matlab 中 UDP 接收块的参数如下图所示UDP 接收参数 https i stac

随机推荐

  • db2有MySQL那样的时间戳_Oracle、Db2、SqlServer、MySQL 数据库插入当前系统时间

    做易买网项目 由于对数据库插入系统时间不了解 常常遇到的问题 1 java sql SQLException ORA 01861 文字与格式字符串不匹配 原因 由于获取系统时间类型不对 应为systdate 下面介绍Oracle Db2 S
  • Firefly 问题集锦

    1 当打开Firefly与VS2010报这个错误的时候 显示下面这个错误 解决办法 打开 C Windows System32 drivers etc hosts文件 在文件末尾添加2行 注意 这两行前可能会被杀毒软件添加添加 号 添加后就
  • c# 操作MongoDB

    项目要求 将外部数据同步到mongodb 需要安装mongodb驱动包 MongoDB Driver 此处用到的版本是2 12 3 实现代码 using MongoDB Bson using MongoDB Driver using Sys
  • delete NULL是合法的!

    http bbs csdn net topics 390684584
  • 普通程序员和顶级程序员5个思维模式上的区分!

    细说硅谷普通程序员和顶级程序员5个思维模式上的区分 gineer 是一本很顶尖的书 作者为了这本书 采访了很多硅谷顶级科技公司的顶尖软件工程师 他发现这些给世界带来巨大影响的的工程师们竟然有几个共同点 我感觉大家有必要一起学习一下他们的这些
  • win8网络信息服务器,Win8.1怎么设置DNS服务器地址

    一 首先在Win8 1桌面右下角任务栏的网络图标中 右键鼠标 然后选择 打开网络和共享中心 如下图所示 二 进入Win8 1网络和共享中心后 我们点击已经连接的本地连接或者无线连接网络名称 如下图所示 注 由于笔者目前使用的是无线网络 因此
  • 【Python】猎聘网招聘数据爬虫(Python网络爬虫课设简要)

    Python 猎聘网招聘数据爬虫 Python网络爬虫课设简要 注 本文仅供学习交流使用 合肥学院 20信管 20302211009 项目文件可自行前往博客主页下载或联系作者qq 3416252112 爬取数据耗时约50分钟 1 背景介绍
  • 工信部发布2015年中国软件业务收入"百强"发展报告(zz)

    z 2016 10 25 16 03 39 L 67 28581 BG57IV3 T3610511221 K F3651456730 T295 L7194 R267 V5862 2016中关村高成长企业TOP100 1 北京远程视界眼科医院
  • 服务器怎样共享文件夹共享文件夹,服务器怎样共享文件夹共享文件夹

    服务器怎样共享文件夹共享文件夹 内容精选 换一换 该任务指导用户在SSL证书管理平台下载证书 证书状态为已签发或托管中 仅支持在证书有效期内 不限次数的下载证书 下载后即可在服务器 华为云的或非华为云的均可 上进行部署 证书请求文件选择的是
  • 【项目实训】篮球计分系统设计(无线nRF905版本)

    将单片机项目实训 篮球计分系统 无线nRF905版本 分享出来 如有不足 敬请指出 实验图片 视频视频 项目实训 篮球积分系统 nRF905版本 目录 一 设计要求 二 方案设计 三 硬件电路设计 四 软件设计 五 其他图片 六 资料链接
  • 无线上外网,有线上内网的方式(转)

    原文地址 无线上外网 有线上内网的方式 转 atongmu2017的博客 CSDN博客 在外面调试程序 内网是调试程序必须的 而要上外网 又只有通过无线连接 不过发现这样有个问题 就是在笔记本的无线连上外网的时候 只要插上内网的网线 就发现
  • docker logs 实现剖析

    Allen 谈 Docker 系列 DaoCloud 正在启动 Docker 技术系列文章 每周都会为大家推送一期真材实料的精选 Docker 文章 主讲人为 DaoCloud 核心开发团队成员 Allen 孙宏亮 他是 InfoQ Doc
  • PUTTY或WinSCP无法远程连接服务器故障解决

    1 用PUTTY远程连接服务器时 提示错误 server unexpectedly closed network connection 解决方法 1 查看服务器防火墙 可将其关闭 2 查看sshd config配置信息 将字段UseDNS的
  • 外部程序只运行一个实例的方法

    connect Process QProcess stateChanged const QProcess ProcessState newState 如果运行状态变成NotRunning 关闭Process if newState QPro
  • stm32读取DHT11温湿度传感器

    stm32读取DHT11温湿度传感器 一 序言 二 DHT11响应数据格式 三 DHT11通讯过程 3 1 产生起始信号 3 2 读取数据0 3 3 读取数据1 DHT11停止信号 四 代码实例 4 1读取DHT11源文件 4 2 读取DH
  • 配置免密登录ssh: connect to host hadoop03 port 22: Connection refused可能原因

    hadoop02通过ssh登录hadoop03 出现connect to host hadoop03 port 22 Connection refused 可能是由于ip地址写错和hosts文件配置出错 1 修改虚拟机网络IP地址 vim
  • java经典算法|猴子吃桃问题

    猴子吃桃问题 问题描述 问题分析 代码实现 运行结果 问题描述 猴子第一天摘下若干个桃子 当即吃了一半 还不瘾 又多吃了一个 第二天早上又将剩下的桃子吃掉一半 又多吃了一个 以后每天早上都吃了前一天剩下的一半零一个 到第10天早上想再吃时
  • 箭头函数的this、箭头函数与普通函数的区别

    箭头函数的this 箭头函数与普通函数的区别 一 箭头函数与普通函数的区别 1 箭头函数的this与普通函数不一样 2 箭头函数不可用作构造函数 箭头函数没有自己的this 3 箭头函数没有prototype属性 4 箭头函数不能使用arg
  • 大数据应用——hive实验

    任务一 完成Hive内嵌模式部署 1 1 Hive部署 官网下载Hive安装包 1 官网地址 Apache Hive 2 文档查看地址 https cwili apache org confluence display Hive Getti
  • 信号实验(03)连续时间系统的频域分析

    信号实验 03 连续时间系统的频域分析 一 基础知识 1 1 数值积分 y quadl func a b a b 分别表示定积分的下限和上限 y quadl myfun a b 1 2 傅里叶变换和逆变换 要用到符号运算 fourier i