matlab使用杂谈5-fftshift函数的使用

article/2025/1/18 15:41:00

matlab使用杂谈5-fftshift函数的使用

  • fftshift基本使用
      • 主要作用:将零频分量移到频谱中心
  • 简单示例
  • 一般使用场合

fftshift基本使用

主要作用:将零频分量移到频谱中心

基本语法:
Y = fftshift(X)
Y = fftshift(X,dim)

X-输入数组,可以是向量、矩阵或多维数组,支持复数
dim - 沿其计算的维度
来源于Matlab
说明:
如果X是向量,则fftshift会将X的左右两半部分进行交换
如果X是矩阵,则fftshift会将X的第一象限与第三象限交换,将第二象限与第四象限交换
如果X是多维数组,则fftshift会沿每个维度减缓X的半空间

简单示例

交换行向量的左右两半部分,如果一个向量的元素为奇数,则中间的元素会被视为属于向量的左半部分

Initial = [1 2 3 4 5 6 7]
fftshift(Initial)
% 结果
ans = 5 6 7 1 2 3 4

一般使用场合

fftshift从名字上就能看出,主要是配合傅里叶变换使用
所以fftshift在分析信号的频率分量时十分有用,可以将零频分量移动到中心

下面沿用官网的一个实例:

创建信号S、计算其傅里叶变换,然后绘制功率曲线

fs = 100; % 频率
t = 0:(1/fs):(10-1/fs); % 时间分量
S = cos(2*pi*15*t); % 信号
n = length(S);
X = fft(S); 对信号进行傅里叶变换
f = (0:n-1)*(fs/n) % 频率范围
power = abs(X).^2/n; % 信号的振幅
plot(f,power)

如图所示
本图来源于Matlab
此时信号分量是从0-100的,不符合信号分析时的分布规则,因此需要利用fftshift将零频分量移动到中心

Y = fftshift(X,2)
fshift = (-n/2:n/2-1)*(fs/n);
powershift = abs(Y).^2/n;
plot(fshift,powershift);

在这里插入图片描述
以上主要是fftshift函数的使用了,一般来说咱们在利用matlab分析信号或者图像信息时,大概率会需要用到这个功能

傅里叶变换的详细讲解可以参照另外两篇博客:
https://blog.csdn.net/haoaoweitt/article/details/83012477
https://blog.csdn.net/lihe4151021/article/details/89675567


http://chatgpt.dhexx.cn/article/OKAe4BPH.shtml

相关文章

Matlab使用串口进行数据通信

Matlab进行串口通信 文章目录 Matlab进行串口通信前言问题解决方案方法一:Instrument Control Toolbox方法二.编写通信脚本 总结 前言 在电机运行过程中,需要将电机的姿态等参数通过串口传输至PC端,然后在Matlab进行姿态解算,这样…

MATLAB 使用python代码

matlab是一个非常强大的数学处理工具,python中很多工具库封装得非常好,对于高版本的MATLAB来说,可以直接使用python以及这些库,我这里使用的R2017a版本,网上说2015版开始就可以,没有测试,步骤如…

基于MCR的MATLAB使用案例

写在前面 众所周知MATLAB是一款强大的数学软件,便捷的数值计算能力以及对众多的算法的集成,在科研和工程中得到了广泛的应用。产品中使用了MATLAB程序,就必须要求安装MATLAB, 可是交付给用户使用来说不太适合,当然不仅仅是因为MA…

MATLAB 使用GUI设计简单的计算器

文章目录 1.准备工作2.使用GUI功能创建计算器界面2.1 打开GUI设计界面2.2 编辑运行框2.3 设置按钮 3.为每个按钮设定函数功能4.结果演示5.总结与反思 1.准备工作 本文使用的版本是Matlab2018b。 了解GUI:图形用户界面(Graphical User Interface&#xf…

MATLAB使用git管理代码

1、安装git(一路next就行) Git - Downloads (git-scm.com)https://git-scm.com/downloads 2、打开MATLAB,在你想要管理的代码文件右键,找到源代码管理,设置远程库的地址,就是你在github或者gitee上创建的…

什么是耦合、紧耦合、松耦合

一、耦合 耦合是两个或多个模块之间的相互关联。在软件工程中,两个模块之间的耦合度越高,维护成本越高。因此,在系统架构的设计过程中,应减少各个模块之间的耦合度,以提高应用的可维护性。 二、紧耦合 紧耦合架构本质…

java什么是耦合_在JAVA编程中什么叫耦合?

展开全部 耦合性是编程中的一个判断代码模块构成质量的属性,不影响已有功能,但影响未来62616964757a686964616fe78988e69d8331333365633838拓展,与之对应的是内聚性。 耦合性:也称块间联系。指软件系统结构中各模块间相互联系紧密…

什么是耦合,什么是内聚

耦合 有 A 和 B 两个 element。当修改了 A 的时候,B 必须被修改,那么两者就耦合了。 在耦合的定义里没有 element 之间的包含关系。耦合是两两之间的,不是父子之间的 耦合差不多就是静态类型的引用关系,那种可以被编译器报错的…

耦合是什么 耦合有哪些种类

耦合是对一个软件结构内不同模块之间互联程度的度量。耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。 模块间的耦合度强烈影响着系统的可理解性、可测试性、可靠性和可维护性。 耦合程度最低:两个模块每个…

python copy()和deepcopy()解释(import copy)

对于简单的 object,用 shallow copy 和 deep copy 没区别 复杂的 object, 如 list 中套着 list 的情况,shallow copy 中的 子list,并未从原 object 真的「独立」出来。也就是说,如果你改变原 object 的子 list 中的一…

解决使用copy.deepcopy()拷贝Tensor或model时报错只支持用户显式创建的Tensor问题

模型训练过程中常需边训练边做validation或在训练完的模型需要做测试,通常的做法当然是先创建model实例然后掉用load_state_dict()装载训练出来的权重到model里再调用model.eval()把模型转为测试模式,这样写对于训练完专门做测试时当然是比较合适的&…

Python中copy()和deepcopy()的区别

同样是copy,二者有什么不同呢今天我们就一探究竟!!! 关于copy()和deepcopy()的第一篇博客 初学编程的小伙伴都会对于深浅拷贝的用法有些疑问,今天我们就结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~…

python deepcopy

1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。 2. copy.deepcopy 深拷贝 拷贝对象及其子对象 一个很好的例子: import copya [ 1 , 2 , 3 , 4 , [ a , b ]] # 原始对象 b a # 赋值,传对象的引用 c copy.…

Python copy与deepcopy(深浅复制)

Python深浅复制 一般对象的复制复杂对象的复制 最近遇到了有关Python中的copy与deepcopy问题,之前再Java里面好像也遇到了深浅复制的问题,但是Python中的深浅复制还不是很熟,就简单了解了一下它们2个的差别,可以供大家参考&#x…

python copy()和deepcopy()解释(浅拷贝、深拷贝)

对于简单的 object,用 shallow copy 和 deep copy 没区别 复杂的 object, 如 list 中套着 list 的情况,shallow copy 中的 子list,并未从原 object 真的「独立」出来。也就是说,如果你改变原 object 的子 list 中的一…

python学习 - copy模块的浅复制(copy)与深复制(deepcopy)

python学习 - copy模块的浅复制(copy)与深复制(deepcopy) 简介copy.copy()详解copy.deepcopy()详解 简介 在使用列表或者字典进行传递参数的时候,可能会遇到函数改变了列表的值,但是不希望印象原来列表中的…

python中copy()和deepcopy()详解

参考文章 http://iaman.actor/blog/2016/04/17/copy-in-python **首先直接上结论: —–我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在。所以改变原有被复制对象不会对已经复制出来的新对象产生影响。 —–而浅…

不懂copy与deepcopy的区别?这一篇就够了

背景 在运用Python进行开发代码过程中,会遇到变量复制备份的场景,但并没有得到预期的结果,例如下面的例子: lista [a, b, [1, 2, 3]] listb lista.copy() lista[2].append(4)print(lista) # [a, b, [1, 2, 3, 4]] print(list…

浅拷贝(shallow copy)和深拷贝(deep copy)

浅拷贝(shallow copy):只负责克隆按值传递的数据(比如基本数据类型、String类型) 深拷贝(deep copy):除了shallow copy的值外,还负责克隆引用类型的数据,基本…

js深拷贝deepCopy教程:支持循环引用、类型不丢失、可扩展、可定制

目录 1. 背景2. 简介3. 安装方式 3.1. 方式1&#xff1a;通过 npm 安装3.2. 方式2&#xff1a;直接下载原代码3.3. 方式3&#xff1a;通过<script>标签引入 4. 教程 4.1. API简介4.2. 基本使用4.3. 拷贝函数4.4. 指定拷贝深度4.5. 循环引用4.6. 保持类型信息4.7. 拷贝不可…