matlab Fourier变换--方波信号的分解与重建

2023-05-16

N=200; %采用的数据点数
dt=4/N; %采样的间隔
for n=1:N       %生成一个方波
    if (n*dt>=2)
        x(n)=0.8;
    else
        x(n)=-0.8;
    end
end

figure
subplot(2,1,1)
plot((1:N)*dt,x)
hold on
plot((1:N)*dt,zeros(1,N),'k');
xlabel('时间/s')
ylabel('方波信号');
title('原始信号');

%下面开始计算傅里叶变换系数
a=zeros(1,N);
b=a;
c=b;
nn=floor(N/2)+1;

for k=0:nn-1
    a(k+1)=0;
    b(k+1)=0;
    for ii=0:N-1
        a(k+1)=a(k+1)+2/N*x(ii+1)*cos(2*pi*k*ii/N); %求解Fourier系数
        b(k+1)=b(k+1)+2/N*x(ii+1)*sin(2*pi*k*ii/N);
    end
    
    c(k+1)=sqrt(a(k+1).^2+b(k+1).^2);
end

subplot(2,1,2)
freq=(0:nn-1)/(N*dt);
plot(freq,c(1:length(freq)));
title('Fourier变换');
xlabel('频率/Hz')
ylabel('振幅');


%下面通过逆变换重现信号
m=input('输入谐波的最大阶数:');
if(m>(floor(N/2)+1))
    error('谐波最大阶数必须小于Nyquist频率对应的阶数.');
end
if(mod(N,2)~=1)
    a(nn)=a(nn)/2;
end

%合成信号
for ii=0:N-1
    xx(ii+1)=a(1)/2;
    for k=1:m
        xx(ii+1)=xx(ii+1)+a(k+1)*cos(2*pi*k*ii/N)+b(k+1)*sin(2*pi*k*ii/N);
    end
end

% figure
plot((1:N)*dt,xx,(0:N-1)*dt,x);
hold on
plot((1:N)*dt,zeros(1,N),'k');
xlabel('时间/s')
ylabel('信号');
title('合成信号');



通过不断提高最大谐波的阶数,经过Fourier逆变换来重新原来的方波信号会越来越接近真实。

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

matlab Fourier变换--方波信号的分解与重建 的相关文章

  • 复制 Photoshop sRGB 到 LAB 转换

    我想要实现的任务是复制 Photoshop RGB 到 LAB 的转换 为简单起见 我将描述我如何仅提取 L 通道 提取 Photoshop 的 L 通道 这是 RGB 图像 其中包括所有 RGB 颜色 请点击下载 为了提取 Photosh
  • 使用每行的列索引向量提取矩阵元素

    我有一个MxN矩阵 我想要一个列向量v 使用向量s它告诉我对于矩阵中的每一行我将采用哪一列 这是一个例子 Matrix 4 13 93 20 42 31 18 94 64 02 7 44 24 91 15 11 20 43 38 31 21
  • 对外部程序的非阻塞调用,不会丢失返回码

    当从 Matlab 中启动外部程序 为了简洁起见 我们将其称为 EX 时 我可以这样做 status result system EX exe 它将阻塞直到 EX 返回 或者像这样 status result system start EX
  • 如何绘制频谱图函数的结果?

    在我的图中 我有两个轴 第一个是信号的时间序列 第二个是信号的时间序列ifft信号的 我想添加包含信号频谱图的第三个轴 我怎样才能做到这一点 Create the raw signal fs 40 t 0 1 fs 4 y1 sin 2 p
  • 在 MATLAB 中调整 3D 矩阵(图像)的大小

    我有一个 3D 矩阵 MxNxK 想将其大小调整为 M xN xK 就像 matlab 中的 imresize 一样 我正在使用图像金字塔 但其结果不是很准确 需要一个更好的 有什么解决办法吗 你可以使用interp3 因为您想要插入 3D
  • MATLAB 写入多页 tiff 指数慢

    我正在尝试编写一个多页 tiff 文件 该文件是 128 像素 x 128 像素 x 122000 帧的 16 位无符号整数 ImageJ 或简短的 Python 脚本可以在快速机器上在一分钟内完成此操作 在同一台机器上 无论使用我尝试过的
  • 与 Matlab 相比,Numpy 加载 csv 太慢

    我发布这个问题是因为我想知道我是否做了一些非常错误的事情才能得到这个结果 我有一个中等大小的 csv 文件 我尝试使用 numpy 来加载它 为了便于说明 我使用 python 创建了该文件 import timeit import num
  • matlab中的分箱

    我一直无法在 matlab 或 Octave 中找到函数来完成我想要的操作 我有一个两列的矩阵 m x 和 y 值 我知道我可以通过执行 m 1 或 m 2 来提取列 我想将其分成 可能 大小相等的较小矩阵 并绘制这些矩阵的平均值 换句话说
  • 使用 Polyfit 进行垂直线拟合

    这只是一个基本问题 我正在使用拟合线来分散点polyfit 在某些情况下 我的散点具有相同的 X 值并且polyfit无法在其上放置一条线 必须有某种东西可以处理这种情况 毕竟 它只是一个线配合 我可以尝试交换 X 和 Y 然后再画一条线
  • MATLAB 颜色条刻度标记错误?

    我正在绘制 9 个子图 如下图所示 其中一个颜色条代表三个子图 在这里我想将颜色条中的最高值显示为 gt value 令人惊讶的是 当我手动将刻度标签编辑为h TickLabels end gt h TickLabels end 颜色条开始
  • 如何从矩阵的每一行中减去一个向量? [复制]

    这个问题在这里已经有答案了 可能的重复 如何将矩阵的每一行除以固定行 https stackoverflow com questions 4723824 how can i divide each row of a matrix by a
  • 使用二进制遮罩遮罩 RGB 图像

    我在 MATLAB 中读入了一个 RGB 图像 M x N x 3 矩阵 我还有一个图像的二进制掩码 M x N 矩阵 对于某些感兴趣的区域来说它只是 0 而其他地方都是 1 我正在尝试找出如何使用该二进制掩码来掩蔽 RGB 图像 我尝试过
  • 同时使用两个数组中的元素的过滤器

    假设我们有两个大小相同的数组 A and B 现在 我们需要一个过滤器 对于给定的掩码大小 从以下位置选择元素A 但删除掩码的中心元素 并在其中插入相应的元素B 所以 3x3 伪掩码 看起来类似于 A A A A B A A A A 对平均
  • 读取 MEX 文件中的 4D 数组

    我在 MATLAB 中有一个 4 维数组 我正在尝试访问 MEX 函数中的数组 下面创建 testmatrix 一个 4 维矩阵 已知数据为uint8 type Create a 4D array 2x 2y rgb 3 framenumb
  • 如何在matlab中显示图像上的点?

    我有一些像素点 比如 p1 1 1 和 p2 1 10 等等 我想以任何颜色在图像上显示这些点 这个怎么做 MATLAB plot http www mathworks com help techdoc ref plot html文档非常全
  • MATLAB:解包函数

    我正在与 Mathworks 的某人讨论 unwrap http www mathworks com access helpdesk help techdoc ref unwrap html函数中对于 以外的跳跃容差有一个 bug 并且希望
  • 我的傅立叶逆变换中的尖峰

    我正在尝试在 MATLAB 中比较两个数据集 为此 我需要通过傅里叶变换数据来过滤数据集 对其进行过滤 然后对其进行逆傅里叶变换 然而 当我对数据进行逆傅里叶变换时 我在红色数据集的两端都出现了一个尖峰 图片显示了第一个尖峰 它在开始时应该
  • 如何从 Matlab 在 vi​​rtualenv 中执行 Python 代码

    我正在创建一个用于研究的 Matlab 工具箱 我需要执行 Matlab 代码 但也需要执行 Python 代码 我想允许用户从 Matlab 执行 Python 代码 问题是 如果我立即执行此操作 我将必须在 Python 环境中安装所有
  • 如何将向量标准化/非标准化到范围 [-1;1]

    我怎么能够正常化到范围的向量 1 1 我想使用函数norm 因为它会更快 也让我知道我该怎么做非规范化之后的向量正常化 norm对向量进行归一化 使其平方和为 1 如果要对向量进行归一化 使其所有元素都在 0 和 1 之间 则需要使用最小值
  • 有没有办法在 MATLAB 中执行函数内联?

    我可以使用什么语言功能或开箱即用的技巧来完成 MATLAB 中的函数内联 令人烦恼的是 Google 搜索 matlab 内联函数 http www google com search q matlab inline function揭示了

随机推荐

  • Linux服务器开发-1. Linux系统编程复习

    文章目录 1 GCC1 1 gcc概念1 2 编程语言的发展1 3 gcc工作流程1 4 常见指令选项预处理 xff1a 指令 E xff1a 编译 xff1a 指令 S汇编 xff1a 指令 c链接 xff1a 指令 o指定宏 xff1a
  • 8皇后问题

    span class hljs keyword bool span check span class hljs stl container span class hljs built in vector span lt span class
  • Linux服务器开发-2. Linux多进程开发

    文章目录 1 进程概述1 1 程序概览1 2 进程概念1 3 单道 多道程序设计1 4 时间片1 5 并行与并发1 6 进程控制块 xff08 PCB xff09 2 进程的状态转换2 1 进程的状态2 2 进程相关命令查看进程实时显示进程
  • CMakeLists.txt 构建 Qt工程

    源码路径下包括 xff1a main cpp test cpp test h test ui test qrc cmake minimum required VERSION 3 1 0 project test SET CMAKE INCL
  • 【技术】RTK定位是什么?危化安全生产必看

    RTK定位技术是建立在流动站与基准站误差非常类似的基础上的 xff0c 它利用GPS载波相位观测值进行实时动态定位 RTK定位广受危化行业欢迎 xff0c 成为危化安全生产的热门技术选项 伴随着经济的高速发展 xff0c 信息技术取得了进一
  • GPS/RTK高精度定位系统有什么优势?

    GPS RTK高精度定位系统能提供厘米级 毫米级高精度位置服务 xff0c 逐渐成为智能社会高精度定位的趋势和理想选择 GPS RTK高精度定位系统的出现是信息化时代发展的产物 从移动互联到物联网 xff0c 位置是一个基础的不可或缺的信息
  • 【分享】高精度RTK定位解决方案

    高精度RTK定位系统采用高精度定位标签 xff0c 通过计算机技术 地理信息技术 移动定位技术 通信技术 网络技术 xff0c 为生产现场作业人员配发定位终端 xff0c 实时追踪其位置信息进行相关管控 xff0c 为其活动提供安全技术保障
  • 【分享】5G+北斗RTK高精度人员定位解决方案

    5G 43 北斗RTK高精度定位系统旨在通过5G网络实时提供亚米级 厘米级 毫米级高精度定位服务 xff0c 构建全天候 全天时 全地理的精准时空服务体系 伴随着信息技术日新月异的发展 xff0c 各类 智慧 顺势而出 xff0c 智慧城市
  • 5G+北斗RTK定位:高精度定位技术发展更进一步

    5G 43 北斗RTK定位采用5G定位与北斗RTK定位技术 xff0c 在信号 信息 设施 应用等层面深度融合 xff0c 5G自身可实现亚米级的定位能力与北斗形成信号覆盖互补 xff0c 实现从室内到室外无缝隙衔接与定位 5G通信技术的到
  • 室外定位:高精度北斗RTK定位技术

    北斗RTK定位技术 xff0c 也称北斗差分定位技术 xff0c 利用我国自主研发的北斗卫星定位系统实现精确定位功能 定位精度可根据需要 xff0c 通过选择不同精度的人员定位终端来实现 在科技强国的战略驱动下 xff0c 北斗RTK定位技
  • 【高精度定位】RTK定位与RTD定位知识科普

    高精度定位一般指亚米级别或厘米级别的定位 xff0c 常见的室内有蓝牙AoA和UWB两种技术 xff0c 室外有北斗地基增强技术 xff0c 这些技术都是采用算法进行定位 工业4 0时代 xff0c 在资源和环境约束不断强化的背景下 xff
  • curl http或https上传下载

    curl的使用 注意如果是https请求需要带上ssl的库和curl库如下图 上传文件 回调函数 span class token keyword static span size t span class token function h
  • 层次遍历构建二叉树

    span class hljs keyword struct span TreeNode span class hljs keyword int span val span class hljs keyword struct span Tr
  • Jetson tx2 使用 jetpack 4.3刷机全过程

    1 首先准备一台安装有ubuntu 18 04 ubuntu16 04 系统的主机 xff08 host也就是笔记本 xff09 2 在nvidia官网注册一个nvidia的账号用于下载jetpack 4 3时使用 xff08 刷机过程中需
  • 2020/2/21 Linux Socket编程 高级篇——广播

    广播 xff1a 实现一对多的通信 SO BROADCAST选项 它控制了UDP套接字是否能发广播数据报 xff0c 选项类型是int xff0c 非零表示 是 只有UDP能用 xff0c TCP不能 如果是一个广播地址 xff0c 但SO
  • 大小端字节序(Big Endian和Little Endian)

    那么何为字节序 xff08 Endia xff09 呢 xff1f Big Endian是指低地址存放最高有效字节 xff08 MSB xff09 xff0c 而Little Endian则是低地址存放最低有效字节 xff08 LSB xf
  • GPS定位及通信协议解析

    1 简介 上图为某公司的GPS定位模块 xff0c 自己在使用其进行GPS定位过程中学习到的知识分享给大家 主要参数如下 半双工 UART 3 3V TTL 电平 RS232 IIC CAN 接口输出 xff0c 更快速的应用 xff1b
  • JVM系列(八):堆(Heap)的相关知识介绍

    目录 1 JVM堆的概念 2 JVM堆的特点 3 JVM堆的内部结构 3 1 组成 3 2 堆内存内部空间所占比例 3 3 永久代和元空间区别 4 堆空间的大小设置 5 堆空间垃圾回收 1 JVM堆的概念 JVM中的堆是用来存放对象的内存空
  • C++读写TIF格式

    参考文章 xff1a xff08 1 xff09 https www cnblogs com gywei p 3393816 html xff08 2 xff09 https blog csdn net han jiang xue arti
  • matlab Fourier变换--方波信号的分解与重建

    N 61 200 采用的数据点数 dt 61 4 N 采样的间隔 for n 61 1 N 生成一个方波 if n dt gt 61 2 x n 61 0 8 else x n 61 0 8 end end figure subplot 2