离散系统的变换域分析【数字信号处理四】

2023-11-18

一、求系统H(z)的零、极点、幅频响应和相位响应

在这里插入图片描述

num=[0.0528,0.0797,0.1295,0.1295,0.797,0.0528];
den=[1,-1.8107,2.4947,-1.8801,0.9537,-0.2336];
k=2048;
w=0:pi/k:pi;
h=freqz(num,den,w);
figure(1);
zplane(num,den); 
title("零极点图")
figure(2);
subplot(2,1,1);
plot(w/pi,abs(h));
title('幅度谱'); 
xlabel('\omega/\pi');ylabel('幅值');
subplot(2,1,2);
plot(w/pi,angle(h));
title('相位谱'); 
xlabel('\omega/\pi');ylabel('弧度');

在这里插入图片描述
在这里插入图片描述

二、用Matlab验证DFT运算的对称性质

在这里插入图片描述

N=32;
n=0:N-1;
nn=mod(-n,N)+1;
xn=cos(2*pi*6*n/N)+1i*sin(2*pi*6.8*n/N);
% x[n]  -->  X[k]
Xk=fft(xn);
subplot(2,7,1)
stem(n,abs(Xk));
title("x[n]  -->  X[k]")

% x*[n]  -->  X*[<-k>N]
xn1=conj(xn);
Xk1=fft(xn1);
subplot(2,7,2)
stem(n,abs(Xk1));
title("x*[n]  -->  X*[<-k>N]");
subplot(2,7,2+7);
stem(n,abs(conj(Xk(nn))));
title("直接求X*[<-k>N]");

% x*[<-n>N]  -->  X*[k]
xn2=conj(xn(nn));
Xk2=fft(xn2);
subplot(2,7,3);
stem(n,Xk2);
title("x*[<-n>N]  -->  X*[k]");
subplot(2,7,3+7);
stem(n,conj(Xk));
title("直接求X*[k]");

% xre[n]  -->  Xcs[k]=1/2{X[k]+X*[<-k>N]}
xn3=real(xn);
Xk3=fft(xn3);
subplot(2,7,4)
stem(n,abs(Xk3));
title("xre[n]  -->  Xcs[k]=1/2(X[k]+X*[<-k>N])");
subplot(2,7,4+7);
stem(n,1/2*(Xk+conj(Xk(nn))));
title("直接求Xcs[k]");

% xim[n]  -->  Xca[k]=1/2{X[k]-X*[<-k>N]}
xn4=1i*imag(xn);
Xk4=fft(xn4);
subplot(2,7,5)
stem(n,Xk4);
title("xim[n]  -->  Xca[k]=1/2(X[k]-X*[<-k>N])");
subplot(2,7,5+7);
stem(n,1/2*(Xk-conj(Xk(nn))));
title("直接求Xca[k]");

% xcs[n]  -->  Xre[k]
xncs=1/2*(xn+conj(xn(nn)));
Xk5=fft(xncs);
subplot(2,7,6)
stem(n,Xk5);
title("xim[n]  -->  Xre[k]");
subplot(2,7,6+7)
stem(n,real(Xk));
title("直接求Xre[k]");

% xca[n]  -->  jXim[k]
xnca=1/2*(xn-conj(xn(nn)));
Xk6=fft(xnca);
subplot(2,7,7)
stem(n,Xk6);
title("xca[n]  -->  jXim[k]");
subplot(2,7,7+7)
stem(n,1i*imag(Xk));
title("直接求jXim[k]");

在这里插入图片描述
第一列为求x(n)变化后对应的fft,第二列为直接求fft。
结果一致,证明了DFT运算的对称性质。

三、产生数字线性调频信号,分析时域波形和频谱特性

在这里插入图片描述

fre=5*10.^7;
T=1/fre;
t=0.1*10.^-3;
fre_start=9.5*10.^5;
fre_end=1.05*10.^6;
k=2*(fre_end-fre_start)/t;

n=0:T:t;
len=length(n);
x=cos(2*pi*(fre_start+1/2*k*n).*n);
subplot(2,1,1);
plot(n,x);
xk=abs(fftshift(fft(x)));
subplot(2,1,2);
f=(-len/2:len/2-1)*fre/len;
stem(f,xk);
axis([0,2*10.^6,0,800]);
title('频谱图');xlabel('f/Hz');

在这里插入图片描述
时域上基本看不出调频后有什么变化。
但观察频谱可以发现,通过调频,频谱上有了对应的分量,范围在1Ghz左右,符合理论计算结果。

四、设计简单的OFDM系统,并验证循环前缀的作用

在这里插入图片描述

M=8;N=3;
xn=round(rand(M,1));
hn=[1,0.1,0.01];

xnk=ifft(xn);
xncp=[xnk(end-(N-2):end,1);xnk];

yncp=conv(xncp,hn);
Yk=yncp(N:N+M-1).';

hncp=[hn,zeros(1,M-N)];
Hk=fft(hncp);

for i=1:M
    Xk(i)=Yk(i)/Hk(i);
end
xnifft=abs(fft(Xk));
err=0.5;
for i=1:M
    if xnifft(i)<err
        xn_output(i)=0;
    else
        xn_output(i)=1;
    end
end
k=0:M-1;
subplot(3,1,1);
stem(k,xn);
title('随机生成数列xn');
subplot(3,1,2);
stem(k,xnifft);
title('接收后的yn序列');
subplot(3,1,3);
stem(k,xn_output);
title('设置阈值处理误差后恢复的yn序列');

在这里插入图片描述
随机序列xn长度为M,信道冲激响应hn长度为N。
首先我们对随机序列xn进行IDFT变换,然后通过N-1个样本添加循环前缀将xn延长为M+N-1的序列xncp。
将xncp与hn卷积得到yncp,取中间M个样本得到yk。
将hn补零至M点求FFT得到hk
Xk等于yk / hk
对Xk求FFT即得到yn
此时的yn有误差,通过设置阈值,判决处理后恢复了xn。

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

离散系统的变换域分析【数字信号处理四】 的相关文章

  • 比较元胞数组中的字符串

    我试图在单词列表中找到最常见的单词 到目前为止 这是我的代码 uniWords unique lower words for i 1 length words for j 1 length uniWords if uniWords j lo
  • 带 if 语句的可向量化 FIND 函数 MATLAB

    我有一个矩阵u 我想遍历所有行和所有列并执行以下操作 如果元素非零 我返回行索引的值 如果元素为零 则查找该元素之后的下一个非零元素的行索引 我可以使用两个带有 find 函数的 for 循环轻松完成此操作 但我需要多次执行此操作 不是因为
  • 将 Matlab MEX 文件中的函数直接嵌入到 Python 中

    我正在使用专有的 Matlab MEX 文件在 Matlab 中导入一些仿真结果 当然没有可用的源代码 Matlab 的接口实际上非常简单 因为只有一个函数 返回一个 Matlab 结构体 我想知道是否有任何方法可以直接从Python调用M
  • 在matlab中设置图例符号的精度

    我有这个 leg2 strcat Max Degree num2str adet 1 1 ch l leg3 strcat Min Degree num2str adet 1 2 ch l leg4 strcat Max Request n
  • 如何将Matlab代码库与Android集成?

    我有一个算法和 MATLAB 中的一些其他代码 我想在我的 Android 应用程序中使用它 我怎样才能做到这一点 我可以从 MATLAB 制作 jar 文件以便与 Android 一起使用吗 我必须做点别的事吗 如果您还有其他产品 适用于
  • Matlab 的快速 JSON 解析器

    您知道 Matlab 中有一个非常快速的 JSON 解析器吗 目前我正在使用JSONlab http www mathworks com matlabcentral fileexchange 33381 jsonlab a toolbox
  • 在 matlab/octave 中将数据集分成两个子集 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 将数据集分为两个子集 例如 训练 和 测试 其中 训练集包含 80 的数据 测试集包含剩余的 20 分裂的意思是生成一个长度等于的逻辑索引
  • 在 MATLAB 中将数据拟合到 B 样条

    我正在尝试估计矩阵形式的时间序列数据中的缺失值 列代表时间点 即现在 我想将矩阵的每一行拟合到 B 样条曲线 并用它来估计缺失值 我可以使用 MATLAB 将数据拟合到普通样条曲线 但我完全陷入尝试找出如何拟合数据以创建 B 样条曲线的困境
  • Matlab 编辑器不使用 emacs 快捷方式

    Is there some way I can make the matlab integrated editor not use emacs shortcut but use more normal shortcuts such that
  • 这是 `min` 和 `nanmin` 之间的区别; Matlab 中的“max”和“nanmax”?

    Matlab描述nanmin and nanmax像这样 NANMIN最小值 忽略NaNs NANMAX最大值 忽略NaNs 但实际上 min and max ignore NaNs too 那我应该使用哪个 根据我的测试 nanmin a
  • 类方法的自定义代码完成?

    在 MATLAB 中 可以定义代码建议和完成 如标题为 的文档页面中所述 自定义代码建议和完成 https www mathworks com help matlab matlab prog customize code suggestio
  • 整数的十进制表示形式中的分隔数字

    例如 我想将用户输入作为整数输入 45697 并将前两位数字存储在数组 向量或其他内容中 例如 4 5 6 9 7 这样我就可以使用一些函数调用来检查前两个值 4 5 并对它们进行计算 问题 我不知道如何存储恢复前两个值 有没有简单的函数调
  • 定义自定义 Mupad 程序的一般相对搜索路径

    假设我有一个 mupad 笔记本myMupadNotebook mn在路径上 C projectFolder ABC abc 它调用程序MyMupadProcedure mu它位于 C DEF GHI 现在我有一个 Matlab 脚本mai
  • 如何每次使用按钮将数据添加到 MATLAB 中的现有 XLSX 文件?

    我有一个函数可以生成一些变量 例如分数 对 错 未回答 使用按钮调用此功能 问题是如何每次将函数生成的这些值添加 附加到 XLSX 文件中 或者 如何创建 MAT 文件以便可以添加它 可能的解决方案是什么 附加到 xls 文件所涉及的挑战是
  • 为什么 mex 文件中的 OpenMP 仅产生 1 个线程?

    我是 OpenMP 新手 我有以下代码 使用配置了 MSVS2010 的 Matlab mex 可以正常编译 计算机有 8 个可用处理器 我也使用 matlabpool 检查过 include mex h include
  • 垂直子图的单一颜色条

    我想让下面的 MATLAB 图有一个沿着两个子图延伸的颜色条 像这样的事情 使用图形编辑器手动完成 Note 这与提出的问题不同here https stackoverflow com questions 39950229 matlab t
  • matlab部署工具到java包javac错误

    我正在尝试将我的程序包装为与 java 一起使用 我首先尝试了一个简单的 hello world 你好世界 m disp 你好世界 我使用了deploytool并选择了java包 当它到达这一行时 执行命令 javac verbose cl
  • 将数据提示堆栈放在轴标签顶部,并在轴位置发生更改后更新轴标签

    此问题仅适用于 unix matlab Windows 用户将无法重现该问题 我在尝试创建位于 y 轴标签顶部的数据提示时遇到问题 下图很能说明问题 正如您所看到的 在 ylabel 附近创建的数据提示将到达 ylabel 文本的底部 而期
  • Matlab颜色检测

    我试图一致地检测同一场景的图像之间的某种颜色 这个想法是根据颜色配置文件识别一组对象 因此 例如 如果给我一个带有绿色球的场景 并且我选择绿色作为我的调色板的一部分 我想要一个具有反映它检测到球的矩阵的函数 任何人都可以为这个项目推荐一些
  • Python 或 C 语言中的 Matlab / Octave bwdist()

    有谁知道 Matlab Octave bwdist 函数的 Python 替代品 此函数返回给定矩阵的每个单元格到最近的非零单元格的欧几里得距离 我看到了一个 Octave C 实现 一个纯 Matlab 实现 我想知道是否有人必须用 AN

随机推荐

  • 三种SQL实现聚合字段合并(presto、hive、mysql)

    需求 按照项目名 以逗号合并参与人 presto select item name array join array agg name as group name from test test 04 group by item name o
  • Java版企业电子招标采购系统源代码Spring Boot + 二次开发 + 前后端分离 构建企业电子招采平台之立项流程图

    项目说明 随着公司的快速发展 企业人员和经营规模不断壮大 公司对内部招采管理的提升提出了更高的要求 在企业里建立一个公平 公开 公正的采购环境 最大限度控制采购成本至关重要 符合国家电子招投标法律法规及相关规范 以及审计监督要求 通过电子化
  • swagger注解之@ApiOperation

    swagger注解之 ApiOperation 链接 swagger学习一 链接 swagger学习二 ApiOperation 用于方法 表示一个http请求的操作 ApiOperation value 接口说明 httpMethod 接
  • 【Linux】Argument list too long参数列表过长的办法-四种

    1 背景 Linux下使用cp mv rm chmod等命令时经常会碰到 Argument list too long 错误 这主要是因为这些命令的参数太长 即文件个数过多 2 解决方案 方案一 将文件群手动划分为比较小的组合 user l
  • oracle 聚合函数 LISTAGG ,将多行结果合并成一行

    LISTAGG 列名 分割符号 oracle 11g 以上的版本才有的一个将指定列名的多行查询结果 用 指定的分割符号 合并成一行显示 例如 表原始数据 需求 将 mb1 Transport License list 表中的数据 根据 tr
  • 设计师winPE 更新支持Z370/Z390系列网卡 集成鲁大师远程协助QQ、检测工具、修复工具等懒得写自己看吧

    设计师winPE 更新支持Z370 Z390系列网卡 集成鲁大师远程协助QQ 检测工具 修复工具等懒得写自己看吧 网络远程版单机极速版 链接 https pan baidu com s 1BEraFYvtKNeqRkGljIbTtQ 提取码
  • 卷积运算转换为矩阵乘法

    看卷积神经网络的时候 发现代码中计算卷积是通过矩阵乘法来计算的 搜了一下发现网上这方面的资料很少 刚开始找中文的 找到两个 http blog csdn net anan1205 article details 12313593 http
  • 宽表, 窄表, 维度表, 事实表的区别

    在数据开发里 会涉及到一些概念 宽表 窄表 维度表 事实表 宽表 把多个维度的字段都放在一张表存储 增加数据冗余是为了减少关联 便于查询 查询一张表就可以查出不同维度的多个字段 窄表 和我们 mysql 普通表三范式相同 把相同维度的字段组
  • 信奥:1001Hello,World! 1002输出第二个整数 1003对齐输出

    include
  • Qt WebAssembly实验记录

    文章目录 1 安装及介绍 2 问题及解决方案 2 1 在C 中调用js函数 2 2 中文无法显示 乱码 2 3 无法输入中文 2 4 qt对应的emsdk版本 2 5 文件的下载以及上传 2 6 设置调试时的网页浏览器 2 7 编译时报空间
  • 睿象云入围

    睿象云入围 腾讯云原生加速器首期成员名单 6月30日 开源向善 应云而生 腾讯云原生加速器公布了首期入选企业名单 睿象云等 38 家优秀云原生企业从全球500多家参与企业中脱颖而出 携手腾讯共建云原生生态 面向云原生未来加速启航 产业数字化
  • 基于 ZooKeeper 搭建 Kafka 高可用集群

    kafka简介与应用场景 Apache Kafka是分布式发布 订阅消息系统 在 kafka官网上对 kafka 的定义 一个分布式发布 订阅消息传递系统 它最初由LinkedIn公司开发 Linkedin于2010年贡献给了Apache基
  • UE4学习笔记--连接MySQL数据库(C++)

    UE4学习笔记 连接MySQL数据库 我个人是个比较水的人 在学校没好好学程序 不误正业的玩建模 现在美术和程序都不行 想想还是重新认真学程序吧 先从记笔记开始 话说我还是第一次写博客 我是跟着几位大佬的博客做的 记录一下自己的问题 以免以
  • CompletableFuture异步

    更多文章 关注 码视野 CompletableFuture是Java 8提供的一种异步编程方式 它以函数式编程API的形式提供了丰富的异步操作接口 相比于传统的Future异步方式 CompletableFuture更为灵活和易用 可以轻松
  • linux创建文件夹主机名,Linux创建、删除文件和文件夹命令

    今天学习了几个命令 是创建 删除文件和文件夹的 在linux里 文件夹是目录 下面说下我学习的命令 接下来是小编为大家收集的Linux创建 删除文件和文件夹命令 欢迎大家阅读 Linux创建 删除文件和文件夹命令 创建文件夹 mkdir 一
  • Zotero使用笔记—文献管理、做笔记、文献引用、数据备份

    先贴一张zotero的大头照 步入正题 依次介绍zotero的几大功能 一 中英文 文献管理 先看了视频1和视频2这两个基本使用教程 浏览器又搜了一点 学到了 zotero用一个条目存储一篇文献的基本信息和PDF zotero中添加一个条目
  • 注册表:无法打开 XXX 由于某个错误无法打开该密钥。详细信息:拒绝访问

    错误原因 没有注册表用户权限 正确添加用户权限的步骤如下 跟着图片步骤 右击该项 权限 选中想要添加为当前所有者的用户后 点击应用 如果没用户显示 可以从 其他用户或组 中添加进来 权限添加完毕 转载于 https www cnblogs
  • 什么吃掉了我的硬盘?

    什么吃掉了我的硬盘 http www am82 com houzan archives 4550 posted on 2010 08 15 20 29 lexus 阅读 评论 编辑 收藏 转载于 https www cnblogs com
  • L2TP和PPTP的区别

    用最短的时间搞清楚L2TP和PPTP的区别 一 相关知识铺垫 1 虚拟隧道协议 一种通过公共网络的基础设施 在专用网络或专用设备之间实现加密数据通信的技术 通信的内容是可以是任何通信协议的数据包 隧道协议将这些协议的数据包重新封装在新的包中
  • 离散系统的变换域分析【数字信号处理四】

    离散系统的变换域分析 一 求系统H z 的零 极点 幅频响应和相位响应 二 用Matlab验证DFT运算的对称性质 三 产生数字线性调频信号 分析时域波形和频谱特性 四 设计简单的OFDM系统 并验证循环前缀的作用 一 求系统H z 的零