matlab实现离散傅里叶变换及低通滤波

2023-11-05

如图传感器无滤波状态下FZ数据为下列
在这里插入图片描述
导入matlab使用工具箱分析图如下:
在这里插入图片描述

将数据导入matlab代码

clear;clc;close all
load('data_nofliter')
Fs=100;      % 采集频率
T=1/Fs;       % 采集时间间隔

%信号长度最好为偶数
N=length(data_z);  % 采集信号的长度

y = data_z; %将数据放入y向量

t=(0:1:N-1)*T;   % 定义整个采集时间点
t=t';            % 转置成列向量

% 绘制时域信号
figure
plot(t,y)
xlabel('时间')
ylabel('信号值')
title('时域信号')

% fft变换
Y=fft(y);          % Y为fft变换结果,复数向量
Y_half=Y(1:N/2+1);      % 只看变换结果的一半即可
A=abs(Y_half);          % 复数的幅值(模)
f=(0:1:N/2)*Fs/N;  % 生成频率范围
f=f';              % 转置成列向量

% 幅值修正
A_adj=zeros(N/2+1,1);
A_adj(1)=A(1)/N;       % 频率为0的位置
A_adj(end)=A(end)/N;   % 频率为Fs/2的位置
A_adj(2:end-1)=2*A(2:end-1)/N;

% 绘制频率幅值图
figure
subplot(3,2,1)
plot(f,A_adj)
xlabel('频率 (Hz)')
ylabel('幅值 (修正后)')
title('FFT变换幅值图')
grid on

% 绘制频谱相位图
subplot(3,2,2)
phase_angle=angle(Y_half);    % angle函数的返回结果为弧度
phase_angle=rad2deg(phase_angle); 
plot(f,phase_angle)
xlabel('频率 (Hz)')
ylabel('相位角 (degree)')
title('FFT变换相位图')
grid on

%%计算理想低通滤波器的频率响应
fc= 15;
H = zeros(length(f),1);
H(f<fc)=1;

HA = abs(H);
Hangle = angle(H);
Hangle = rad2deg(Hangle);  %将弧度转换为角度

subplot(3,2,3)
plot(f,HA,'m')
xlabel('频率(Hz)')
ylabel('H的幅值')
grid on

subplot(3,2,4)
plot(f,Hangle,'m')
xlabel('频率(Hz)')
ylabel('H的相位角')
grid on

%%计算输出信号的傅里叶变换
output_half = Y_half.*H;
output_halfA=abs(output_half );
% 幅值修正
output_halfA_adj=zeros(N/2+1,1);
output_halfA_adj(1)=output_halfA(1)/N;       % 频率为0的位置
output_halfA_adj(end)=output_halfA(end)/N;   % 频率为Fs/2的位置
output_halfA_adj(2:end-1)=2*output_halfA(2:end-1)/N;

subplot(3,2,5)
plot(f,output_halfA_adj,'r')
xlabel('频率 (Hz)')
ylabel('Y的幅值')
grid on

output_halfangle=angle(output_half);
output_halfangle=rad2deg(output_halfangle);  % 将弧度转换为角度,方便观察

subplot(3,2,6)
plot(f,output_halfangle,'r')
xlabel('频率 (Hz)')
ylabel('Y的相位角 (degree)')
grid on

%% 输出信号的半谱补全成全谱
second_half=output_half(2:end-1);
second_half=conj(second_half);
second_half=flip(second_half);
output=[output_half;second_half];

%% 对output做傅里叶反变换,得到时域输出信号y(t)
OUTPUT=ifft(output);

figure
plot(t,OUTPUT,'r')
xlabel('时间 /s')
ylabel('信号值')
title('时域输出信号 y(t)')
grid on


运行得到下图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
低通滤波的频率为15HZ,数据抖动范围有所缩小。

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

matlab实现离散傅里叶变换及低通滤波 的相关文章

  • 扩展 MATLAB 函数名称的最大长度

    我编写了一个 MATLAB 程序 可以动态创建自定义 MATLAB 函数 并使用以下命令在其他 MATLAB 实例中启动它们unix命令 我使用这个程序来自动化 fMRI 神经影像分析 使用 SPM8 for MATLAB 一切正常 但是
  • 两个 y 轴与相同的 x 轴[重复]

    这个问题在这里已经有答案了 可能的重复 在单个图中绘制 4 条曲线 具有 3 个 y 轴 https stackoverflow com questions 1719048 plotting 4 curves in a single plo
  • 如何使用matlab生成不同频率的正弦波?

    对于我的项目 我需要使用 matlab 生成一个正弦波 它有 100 000 个样本 并且频率在每 10 000 个样本后随机变化 采样率和频率可以根据方便而定 matlab中有没有函数可以生成这个 好的另一个例子 生成 5 个随机频率 r
  • 如何在 Matlab 中使用谷歌翻译?

    我正在编写一个程序 使用 Matlab 列出电影字幕文件中的所有唯一单词 现在我有一个独特的单词列表 我想将其翻译成我的语言并在观看电影之前了解其含义 有谁知道如何在 Matlab 中使用 Google Translate 以便完成我的脚本
  • 使用mat2cell将MxN的矩阵划分为1xN大小的M矩阵

    我有一个大小为 MxN 的矩阵 比方说 1867x3 1867 行和 3 列 我想将其分成 1867 个大小为 1x3 的单元格 我使用了mat2cell X 1 1866 这里X是矩阵 1867x3 结果给出了两个单元格 一个单元格的大小
  • 不等间隔时间序列的移动平均线

    我有一个证券交易所股票价格的数据集 时间 价格 但数据点之间的间隔并不相等 从 1 到 2 分钟不等 在这种情况下计算移动平均值的最佳实践是什么 如何在Matlab中实现呢 我倾向于认为 点的权重应该取决于自上一个点以来的最后时间间隔 Ma
  • 什么是 ANN 中的纪元以及它如何转换为 MATLAB 中的代码?

    我试图理解 并可视化 训练人工神经网络的时代到底是什么 我们有一个包含约 7000 个产品的训练集 其中有 10 个特征 输入 这些产品必须根据这 10 个输入分为 7 个类别 我们的 ANN 有 10 个输入 这些输入进入由 10 个神经
  • 如何在没有安装Visual Studio的另一台机器上使用Visual Studio生成的dll?

    我已经在 Visual Studio 2012 中生成了动态库 我想在另一台机器上使用该库 但我不想在远程机器上安装 Visual Studio 我有 mex 库和 dll 我想运行一个使用这两个库的脚本 当我运行脚本时 出现以下错误 缺少
  • MATLAB 教程中的 SIFT 实现

    我正在寻找 MATLAB 中的一些基本 SIFT 实现 我需要从第一原则来写它 另外 我正在寻找一些可以解释程序中发生的事情的内容 Vedali 的代码和 David Lowe 的代码超出了我的理解范围 如果您是 Matlab 用户 您一定
  • 如何在 Matlab 中将数组打印到 .txt 文件?

    我才刚刚开始学习Matlab 所以这个问题可能非常基本 我有一个变量 a 2 3 3 422 6 121 9 4 55 我希望将值输出到 txt 文件 如下所示 2 3 3 422 6 121 9 4 55 我怎样才能做到这一点 fid f
  • Matlab:如何更改矩阵的存储方式?从 1x1x3 到 1x3?

    我目前有 val 1 0 7216 val 2 0 7216 val 3 0 7216 但我想要 0 7216 0 716 0 721 我可以做什么样的操作来做到这一点 The reshape函数将在这里解决问题 Arrange the e
  • matlab中类库的全局变量

    我有一些matlab声明的类 我如何声明所有类中都可见的常量 例如 这些常量可以是在所有类的方法中使用的物理常量 首先想到的是使用全局变量 还有更好的办法吗 最好在单独的文件中声明这些常量 包含常量的类是执行此操作的一种很好的干净方法 请参
  • 理解高斯混合模型的概念

    我试图通过阅读在线资源来理解 GMM 我已经使用 K 均值实现了聚类 并且正在了解 GMM 与 K 均值的比较 以下是我的理解 如有错误请指出 GMM 类似于 KNN 在这两种情况下都实现了聚类 但在 GMM 中 每个簇都有自己独立的均值和
  • 如何更改Plotyy第二轴的颜色和字体大小?

    我使用 MATLAB 的plotyy 函数绘制了两条曲线 AX H1 H2 plotyy voltage span amplitude voltage span Ca SR The problem is that I cannot chan
  • MATLAB - 冲浪图数据结构

    我用两种不同的方法进行了计算 对于这些计算 我改变了 2 个参数 x 和 y 最后 我计算了每种变体的两种方法之间的 误差 现在我想根据结果创建 3D 曲面图 x gt on x axis y gt on y axis Error gt o
  • @(t)在Matlab中是什么意思? [复制]

    这个问题在这里已经有答案了 正如标题所示 考虑到下面的上下文 t 在 Matlab 中到底意味着什么 computeNumericalGradient 是一个函数 cofiCostFunc 也是一个接受一堆参数的函数 问题是 t 对 cof
  • 对数据进行分布拟合 - MATLAB

    我正在尝试对从显微镜图像中收集的一些数据进行分布 我们知道 152 左右的峰值是由于泊松过程造成的 我想将分布拟合到图像中心的大密度 同时忽略高强度数据 我知道如何将正态分布拟合到数据 红色曲线 但它不能很好地捕获右侧的重尾 尽管泊松分布应
  • Matlab Builder JA - 将 Matlab 编译成 Java jar - 免费版本?

    请记住 我对 Matlab 一无所知 Matlab Builder JA 允许开发人员构建 Matlab 应用程序并将其导出到 Java jar 中 太棒了 我只需要生成一个 jar 然后就可以从其他 java 代码中使用它 有谁知道单罐包
  • matlab中求和函数句柄

    Hi我试图对两个函数句柄求和 但它不起作用 例如 y1 x x x y2 x x x 3 x y3 y1 y2 我收到的错误是 对于 function handle 类型的输入参数 未定义函数或方法 plus 这只是一个小例子 实际上我实际
  • 在 C++ 中使用 matlab 结构(matlab 函数调用的返回值)(由 matlab 编译器生成的库)

    你好 我有一个相当简单的 matlab 函数 例如 function MYSTRUCT myfunc MYSTRUCT prop1 test MYSTRUCT prop2 foo MYSTRUCT prop3 42 end 我用 matla

随机推荐

  • 使用python写一个爬取百度前10条热搜

    import requests from bs4 import BeautifulSoup def get baidu hot url https top baidu com board tab realtime headers User
  • 宝塔面板如何部署静态网站?一分钟教会你最简单的方法

    宝塔面板如何部署静态网站 如果你有做好的静态网站源码 想要直接上传到宝塔面板 有的朋友可能不知道放在哪里 这里教大家一个最简单的方法 首先 一键部署好你的网站 这里用WordPress一键部署来举例 填写好你的网站信息 保存好数据库名和密码
  • 神经网络的过拟合是什么,神经网络过拟合的表现

    神经网络过拟合的现象是什么 发生原因 过拟合现象一般都是因为学习的过于精确 就好比让机器学习人脸 取了100个人的脸训练 但是由于你学习的过精确 导致除了这个样本100人外其他的人脸神经网络都认为不是人脸 实际我们只需要学习人脸的基本特征而
  • lstm时间序列预测+GRU(python)

    lstm时间序列预测 GRU python 1 数据分布 2 完整代码 3 实验结果 4 相关代码 4 1 GRU的修改 4 2 BiLSTM的修改 可以参考新发布的文章 1 BP神经网络预测 python 2 mlp多层感知机预测 pyt
  • 1、muduo网络库 ---- Linux平台下muduo编译安装

    muduo库的介绍 一个基于reactor反应堆模型的多线程C 网络库 作者是陈硕大神 muduo库是基于 boost 库开发的 所以需要在 Linux 平台上首先安装 boost 库 1 boost 库安装 1 编译源码安装 第一种方法是
  • Linux Nginx 配置 Thinkphp 两种方式

    第一种常见 前端vue后端Thinkphp接口以 api开头 这种Thinkphp不用启动 但是需要启动 php pfm 遇到的问题是我多个Thinkphp 项目在不同的目录 配置也是对应目录 但是不同域名访问接口 时都指向了第一个Thin
  • MQ--3 Message queuing)>>>>kafka

    MQ 1 Message queuing gt gt gt gt RabbitMQ MQ 2 Message queuing gt gt gt gt ZooKeeper 三 Kafka http kafka apache org 官网链接
  • windows的磁盘操作之二——初始化磁盘

    转载自 windows的磁盘操作之二 初始化磁盘 bunny技术坊的技术博客 51CTO博客 原文如下 上一节中我们介绍了一些基本概念和主要的API 本节开始我们将列举并分析一些实例 本文中的所有代码我都在vs2008下测试过 读者只需要替
  • Flutter使用C++

    总体 flutter通过dart语言和C 交互 dart的ffi包完成交互 ffi封装了c 的基本数据类型 包括结构体 和一些基本方法 我们可以直接在dart中访问c 的内存数据等 相对于jni更加直接 基本步骤 官方步骤 https do
  • 数据挖掘七种常用的方法汇总

    数据挖掘 Data Mining 就是从大量的 不完全的 有噪声的 模糊的 随机的实际应用数据中 提取隐含在其中的 人们事先不知道的 但又是潜在有用的信息和知识的过程 这个定义包括几层含义 数据源必须是真实的 大量的 含噪声的 发现的是用户
  • 将本地jar 批量发布到 Nexus 私服

    前言 在日常开发过程中 我们有遇到将项目依赖通过 mvn deploy 发布到自己的公司的私服 以便其他人 环境统一下载入口 但是也有一些特殊情况 比如只能拿到第三方 或甲方 的依赖jar 并拿不到源码 所以只能将jar 通过 mvn de
  • 有限域GF(2^8)内乘法代码实现以及原理

    在密码学中经常用到有限域的乘法 一般在AES中用到的是GF 2 8 有限域内乘法 什么是有限域呢 有限域通俗的讲就是函数的运算结果全都包含在一个域中 不同于实数域 有限域有一个最大值 所有超过这个最大值的数都会经过一定的方法使他回到这个域中
  • 主成份分析(PCA)详解

    主成分分析法 Principal Component Analysis 大多在数据维度比较高的时候 用来减少数据维度 因而加快模型训练速度 另外也有些用途 比如图片压缩 主要是用SVD 也可以用PCA来做 因子分析等 具体怎么用 看个人需求
  • Docker基础(1)—— Docker基本概念

    Docker基础 1 Docker基本概念 Docker基础 2 Docker安装及基础操作 关于docker是什么以及docker的教程网上有很多资料 GitBook上的Docker教程是比较官方和全面的 以下我结合手册的学习及在慕课网上
  • mini2440按键中断

    ARM中断控制系统 按键驱动程序设计 一 Arm中断控制系统 1 查询方式 程序不断地查询设备的状态 并做出相应的反应 该方式实现比较简单 常用在比较单一的系统中 比如 一个温控系统中可以实用查询的方式不断检测温度变化 特点 实现简单 但C
  • 操作系统——LRU算法以及置换次数、缺页数、缺页率计算

    目录 一 LRU是什么 二 LRU算法的规则 三 缺页 换页 四 计算页面置换次数 缺页数 一 LRU是什么 LRU 全称是Least Recently Used 即最近最少使用页面置换算法 从字面意思上可以看出 选择最近最久未使用的页面予
  • python猜硬币正反面_python 编写猜硬币小游戏

    猜硬币解法1 import random guess while guess not in 0 1 print 猜硬币游戏 print 猜一猜硬币是正面还是反面 guess int input 正面 请输入0 反面 请输入1 注意要用int
  • 【STM32】

    失败了也挺可爱 成功了就超帅 文章目录 前言 1 JTAG SWD引脚 2 禁用JTAG功能 2 1 标准库 2 2 HAL库 3 禁用SWD JTAG功能 3 1 标准库 3 2 HAL库 总结 前言 最近在画板子耍 我LED灯选用的 P
  • 当测试人员遇上CodeReview:揭秘代码审查绝招

    引言 测试人员的业务流程理解程度 直接影响测试用例的准确性和全面性 为了提高测试用例编写水平和测试效率 有两个关键方面需要注意 首先 通过仔细阅读需求文档并与产品经理进行充分沟通的方式可以达到这一目标 其次 通过进行代码审查来提高代码质量
  • matlab实现离散傅里叶变换及低通滤波

    如图传感器无滤波状态下FZ数据为下列 导入matlab使用工具箱分析图如下 将数据导入matlab代码 clear clc close all load data nofliter Fs 100 采集频率 T 1 Fs 采集时间间隔 信号长