利用MATLAB的linkaxes函数实现子图频率轴同步缩放

《利用 MATLAB linkaxes 函数实现子图频率轴同步缩放》

一、引言

在工程和科学研究中,常常需要同时展示信号或系统在不同频率下的多种特性,如幅值和相位。MATLAB 作为一款强大的科学计算软件,为我们提供了丰富的绘图功能。在绘制多张子图时,若能实现子图之间特定坐标轴的同步操作,将极大地提升数据观察和分析的效率。linkaxes 函数便是 MATLAB 中用于实现此功能的有效工具,它可以让不同子图的坐标轴在缩放、平移等操作上保持一致。本文将通过一个简单的示例详细介绍如何使用 linkaxes 函数实现子图频率轴的同步缩放。

二、linkaxes 函数简介

linkaxes 函数用于关联多个坐标轴的行为,其基本语法如下:

linkaxes(ax, dim)

其中,ax 是一个包含要关联的坐标轴对象的向量,dim 是指定要关联的坐标轴维度的字符串,常见取值为 'x''y''z',分别对应关联 x 轴、y 轴或 z 轴。当 dim'x' 时,对关联的坐标轴进行 x 轴方向的缩放、平移等操作时,这些坐标轴会同步变化。

三、代码示例及解释

3.1 代码示例

% 清除工作区和命令窗口
clear all;
close all;
clc;% 生成频率向量
f = logspace(0, 3, 100); % 频率范围从 1Hz 到 1000Hz
w = 2 * pi * f; % 转换为角频率% 定义传递函数(示例)
H = 1./(1 + 1j * w);% 计算幅值和相位
magnitude = abs(H);
phase = angle(H) * 180 / pi;% 创建图形窗口
figure;% 绘制幅值子图
ax1 = subplot(2, 1, 1);
semilogx(f, 20 * log10(magnitude), 'LineWidth', 1.5);
grid on;
title('Magnitude Plot');
ylabel('Magnitude (dB)');
xlim([min(f), max(f)]);% 绘制相位子图
ax2 = subplot(2, 1, 2);
semilogx(f, phase, 'LineWidth', 1.5);
grid on;
title('Phase Plot');
xlabel('Frequency (Hz)');
ylabel('Phase (degrees)');
xlim([min(f), max(f)]);% 关联两个子图的 x 轴
linkaxes([ax1, ax2], 'x');

3.2 代码详细解释

3.2.1 初始化部分
clear all;
close all;
clc;

这三行代码的作用分别是清除工作区的所有变量、关闭所有打开的图形窗口以及清空命令窗口,确保代码运行环境的干净。

3.2.2 生成频率向量
f = logspace(0, 3, 100);
w = 2 * pi * f;

使用 logspace 函数生成从 1 0 0 10^0 100(即 1Hz)到 1 0 3 10^3 103(即 1000Hz)的 100 个对数间隔的频率点,存储在变量 f 中。然后将这些频率点转换为角频率 w,方便后续计算。

3.2.3 定义传递函数并计算幅值和相位
H = 1./(1 + 1j * w);
magnitude = abs(H);
phase = angle(H) * 180 / pi;

定义一个简单的一阶传递函数 H = 1 1 + j ω H = \frac{1}{1 + j\omega} H=1+1,其中 ω \omega ω 为角频率。使用 abs 函数计算传递函数的幅值,使用 angle 函数计算相位,并将相位从弧度转换为度。

3.2.4 创建图形窗口并绘制子图
figure;
ax1 = subplot(2, 1, 1);
semilogx(f, 20 * log10(magnitude), 'LineWidth', 1.5);
grid on;
title('Magnitude Plot');
ylabel('Magnitude (dB)');
xlim([min(f), max(f)]);ax2 = subplot(2, 1, 2);
semilogx(f, phase, 'LineWidth', 1.5);
grid on;
title('Phase Plot');
xlabel('Frequency (Hz)');
ylabel('Phase (degrees)');
xlim([min(f), max(f)]);

使用 figure 函数创建一个新的图形窗口。通过 subplot(2, 1, 1)subplot(2, 1, 2) 分别创建两个子图,将窗口划分为上下两个区域。在第一个子图中,使用 semilogx 函数绘制对数频率坐标轴的幅值曲线,并设置曲线线宽为 1.5,添加网格、标题和 y 轴标签,同时设置 x 轴的显示范围为频率向量的最小值到最大值。在第二个子图中,同样使用 semilogx 函数绘制相位曲线,并进行类似的图形设置,同时添加 x 轴标签。

3.2.5 关联两个子图的 x
linkaxes([ax1, ax2], 'x');

这行代码将幅值子图和相位子图的 x 轴关联起来。当我们在图形窗口中使用缩放工具对其中一个子图的 x 轴进行缩放操作时,另一个子图的 x 轴会自动同步缩放,方便我们同时观察不同频率下幅值和相位的变化情况。

四、总结

linkaxes 函数为 MATLAB 用户提供了一种便捷的方式来关联多个子图的坐标轴。通过使用该函数,我们可以轻松实现子图频率轴的同步缩放,使得在分析信号或系统的频率特性时更加直观和高效。无论是在教学、科研还是工程应用中,这种同步缩放功能都能帮助我们更好地理解和处理数据。在实际应用中,我们可以根据需要关联更多子图的坐标轴,以满足不同的数据分析需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/19403.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql的rpm包安装

(如果之前下载过mariadb,使用yum remove mariadb卸载,因为mariadb与rpm包安装的mysql有很多相似的组件和文件,会发生冲突,而源码包安装的mysql不会,所以不用删除源码包安装myqsl,只删除mariadb就可以&#…

内容中台重构企业内容管理流程驱动智能协作升级

内容概要 内容中台作为企业数字化转型的核心基础设施,通过技术架构革新与功能模块整合,重构了传统内容管理流程的底层逻辑。其核心价值在于构建动态化、智能化的内容生产与流转体系,将分散的创作、存储、审核及分发环节纳入统一平台管理。基…

haproxy实现MySQL服务器负载均衡

1.环境准备 准备好下面四台台服务器: 主机名IP角色open-Euler1192.168.121.150mysql-server1openEuler-2192.168.121.151mysql-server2openEuler-3192.168.121.152clientRocky8-1192.168.121.160haproxy 2.mysql服务器配置 1.下载mariadb #下载mariadb [rootop…

数据大屏炫酷UI组件库:B端科技风格PSD资源集

一个既精准传达数据内涵,又极具视觉冲击力的UI设计,无疑是提升用户体验、彰显品牌科技实力的关键。但面对如此高要求,UI设计师们往往面临着寻找高质量设计素材的巨大挑战。为此,我们精心打造了这款数据大屏炫酷UI组件库&#xff0…

强化学习笔记7——DDPG到TD3

前提:基于TD 的方法多少都会有高估问题,即Q值偏大。原因两个:一、TD目标是真实动作的高估。 二:自举法高估。 DDPG 属于AC方法:异策略,适合连续动作空间,因为他的策略网络直接输出的动作&#…

150,[5] BUUCTF WEB [BJDCTF2020]EasySearch

进入靶场 有个文件 和之前一道题如出一辙 <?php// 开启输出缓冲&#xff0c;将后续所有的输出内容先暂存到缓冲区&#xff0c;而不是直接发送到浏览器ob_start();/*** 生成一个基于随机字符串和唯一标识符的哈希值* return string 返回生成的 sha1 哈希值*/function get_…

分布式光纤传感:为生活编织“感知密网”

分布式光纤测温技术虽以工业场景为核心&#xff0c;但其衍生的安全效益已逐步渗透至日常生活。 分布式光纤测温技术&#xff08;DTS&#xff09;作为一种先进的线型温度监测手段&#xff0c;近年来在多个领域展现了其独特的优势。虽然其核心应用场景主要集中在工业、能源和基础…

腾讯发布混元-3D 2.0: 首个开源高质3D-DiT生成大模型

在之前的文章中已经和大家介绍过腾讯HunYuan-3D 1.0&#xff0c;感兴趣的小伙伴可以点击下面链接阅读~ HunYuan-3D 是首个开源高质3D-DiT生成大模型&#xff0c;几何与纹理解藕生成&#xff0c;一键将创意具象化。 2.0模型架构图及介绍 2.0模型将几何和纹理生成解耦&#xff0…

CentOS搭建PPPOE服务器

一、安装软件包 yum -y install rp-pppoe 二、配置服务器 1.修改配置文件 打开/etc/ppp/pppoe-server-options文件 nano /etc/ppp/pppoe-server-options 编辑为以下内容&#xff1a; # PPP options for the PPPoE server # LIC: GPL require-pap require-chap login …

数据结构实现顺序表的尾插,尾删,按值查找/修改/删除,按下标查找/增加/删除

头文件&#xff1a;head.h #ifndef __HEAD_H__ #define __HEAD_H__#include <stdio.h> #include <string.h> #include <stdlib.h> #define MAXSIZE 20enum num {success,false-1};typedef int datatype;typedef struct {int len;datatype data[MAXSIZE]; }S…

IDEA集成DeepSeek

引言 随着数据量的爆炸式增长&#xff0c;传统搜索技术已无法满足用户对精准、高效搜索的需求。 DeepSeek作为新一代智能搜索技术&#xff0c;凭借其强大的语义理解与深度学习能力&#xff0c;正在改变搜索领域的游戏规则。 对于 Java 开发者而言&#xff0c;将 DeepSeek 集成…

2025.2.16

Web [GDOUCTF 2023]泄露的伪装&#xff1a; 点进去看就是装神弄鬼&#xff0c;那就直接扫描 果然有东西 第一个是php代码 第二个是个文件 访问发现是一样的 分析一下&#xff1a;使用 file_get_contents($cxk) 函数读取 $cxk 变量中指定的 URL 或文件的内容。 如果读取的内…

WPF的Prism框架的使用

安装Prism.DryIoc库&#xff1a; Prism的区域和模块化&#xff1a; 一个区域可以显示一个用户控件 一个模块就是一个项目&#xff0c;也就是一个类库 动态切换用户控件的案例&#xff1a; <Grid><Grid.RowDefinitions><RowDefinition Height"auto"…

S4D480 S4HANA 基于PDF的表单打印

2022年元旦的笔记草稿 SAP的表单打印从最早的SAPScripts 到后来的SMARTFORM&#xff0c;步入S4时代后由于Fiori的逐渐普及&#xff0c;更适应Web的Adobe Form成了SAP主流output文件格式。 目录 一、 基于PDF表单打印系统架构Interface 接口Form 表单ContextLayout 二、表单接…

chrome://version/

浏览器输入&#xff1a; chrome://version/ Google浏览器版本号以及安装路径 Google Chrome131.0.6778.205 (正式版本) &#xff08;64 位&#xff09; (cohort: Stable) 修订版本81b36b9535e3e3b610a52df3da48cd81362ec860-refs/branch-heads/6778_155{#8}操作系统Windows…

【Kubernetes】k8s 部署指南

1. k8s 入门 1.1 k8s 简介 需要最需要明确的就是&#xff1a;kubernetes&#xff08;简称 k8s &#xff09; 是一个 容器编排平台 &#xff0c;换句话说就是用来管理容器的&#xff0c;相信学过 Docker 的小伙伴对于容器这个概念并不陌生&#xff0c;打个比方&#xff1a;容器…

【Python】Python入门——基础语法及顺序语句

Python入门——基础语法及顺序语句 官方文档地址&#xff1a;https://docs.python.org/zh-cn/3/tutorial/index.htmlPython 是一门易于学习、功能强大的编程语言。它提供了高效的高级数据结构&#xff0c;还能简单有效地面向对象编程。Python 优雅的语法和动态类型以及解释型语…

在使用 uni.getLocation 步骤和一些坑

1.使用前需要去微信小程序申请开通wx.getLocation 获取当前位置的api (不申请上线之后会使用不了)&#xff0c;申报资料的话我让ai帮我写的&#xff0c;说一下使用场景弄几张图片就可以了 地址 &#xff1a; 小程序 2.第二个需要配置域名 具体申请腾讯地图的方法参考 &…

Docker高级篇

1.Mysql主从复制Docker版本 mysql主从复制原理 binlog 1.新建主服务器容器实例 docker run -d -p 3307:3306 --privilegedtrue \ -v /opt/mysql8.4.3/log:/var/log/mysql \ -v /opt/mysql8.4.3/conf:/etc/mysql/conf.d \ -v /opt/mysql8.4.3/data:/var/lib/mysql \ -e MYSQL…

Java中对象序列化机制的优化研究

Java中对象序列化机制的优化研究 对象序列化&#xff08;Serialization&#xff09;是Java编程中一种非常重要的机制&#xff0c;它允许将对象的状态转换为字节流&#xff0c;从而方便存储或网络传输。然而&#xff0c;Java的默认序列化机制虽然功能强大&#xff0c;但在性能、…