百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分析 > 正文

MATLAB绘制局部放大图(含源程序) matlab中图像局部放大怎么做

liebian365 2024-10-29 15:51 37 浏览 0 评论

当需要展示图形中的局部时,可以在同一张图形中绘制局部放大的图形,展示图形的局部细节。今天主要以实际的例子讲解MATLAB实现绘制局部放大图利用了axes函数生成多个坐标图。


1.axes函数

axes函数创建笛卡尔坐标区

语法

axes
axes(Name,Value)
axes(parent,Name,Value)
ax=axes(___)
axes(cax)
说明
axes 在当前图窗中创建默认的笛卡尔坐标区,并将其设置为当前坐标区。通常情况下,您不需要在绘图
之前创建坐标区,因为如果不存在坐标区,图形函数会在绘图时自动创建坐标区。
axes(Name,Value) 使用一个或多个名称-值对组参数修改坐标区的外观,或控制数据的显示方式。
例如,'FontSize',14 可设置坐标区文本的字体大小。有关属性列表,请参阅 Axes 属性。
axes(parent,Name,Value) 在由 parent 指定的图窗、面板或选项卡中创建坐标区,而不是在当前
图窗中创建。
ax=axes(___) 返回创建的 Axes 对象。可在创建 Axes 对象后使用 ax 查询和修改对象属性。
有关属性列表,请参阅 Axes 属性。
axes(cax) 将 cax 指定的坐标区或图设置为当前坐标区,并使父图窗成为焦点。此命令还将 cax 设置为图窗的 Children 属性中列出的第一个对象,并将图窗的 CurrentAxes 属性设置为 cax。

2.在图窗中定位多个坐标区

程序

clc;
clear all;
close all;
%在图窗中放置两个 Axes 对象,并为每个对象添加一个绘图。
% 指定第一个 Axes 对象的位置,使其左下角位于点 (0.1 0.1) 处,宽度和高度均为 0.7。
% 指定第二个 Axes 对象的位置,使其左下角位于点 (0.65 0.65) 处,宽度和高度均为 0.28。
% 默认情况下,所有值为基于图窗的归一化值。将这两个 Axes 对象返回为 ax1 和 ax2。
figure
ax1 = axes('Position',[0.1 0.1 0.7 0.7]);
ax2 = axes('Position',[0.65 0.65 0.28 0.28]);

运行结果

程序

clc;
clear all;
close all;
%在图窗中放置两个 Axes 对象,并为每个对象添加一个绘图。
% 指定第一个 Axes 对象的位置,使其左下角位于点 (0.1 0.1) 处,宽度和高度均为 0.7。
% 指定第二个 Axes 对象的位置,使其左下角位于点 (0.65 0.65) 处,宽度和高度均为 0.28。
% 默认情况下,所有值为基于图窗的归一化值。将这两个 Axes 对象返回为 ax1 和 ax2。
figure
ax1 = axes('Position',[0.1 0.1 0.7 0.7]);
ax2 = axes('Position',[0.65 0.65 0.28 0.28]);

% 在每个 Axes 对象上添加一个绘图。
% 通过将坐标区作为第一个输入参数传递给图形函数来指定坐标区。
% 大多数图形函数会重置某些坐标区属性,如刻度值和标签。但是,它们不会重置坐标区的位置。
contour(ax1,peaks(20))
surf(ax2,peaks(20))

运行结果


3.将坐标区设置为当前坐标区

程序

clc;
clear all;
close all;
% 创建两个重叠的 Axes 对象。然后指定当前坐标区并添加一个绘图。
% 首先创建两个 Axes 对象并指定它们的位置。
% 在每个坐标区周围显示框轮廓。将这两个 Axes 对象返回为 ax1 和 ax2。
figure
ax1 = axes('Position',[0.1 0.1 .6 .6],'Box','on');
ax2 = axes('Position',[.35 .35 .6 .6],'Box','on');
%将 ax1 设置为当前坐标区。此操作将使该坐标区显示在最前面,并使其成为后续图形函数的目标。在坐标区上添加一个线图。
axes(ax1)
x = linspace(0,10);
y = sin(x);
plot(x,y,'r--')
axes(ax2)
y = cos(x);
plot(x,y,'b-')

运行结果


4.在选项卡上创建坐标区

程序

clc;
clear all;
close all;
% 创建包含两个选项卡的图窗。
% 通过为每个选项卡指定父容器,将坐标区添加到每个选项卡上。
% 在第一个选项卡中绘制曲线,在第二个选项卡中绘制一个曲面。
figure
tab1 = uitab('Title','Tab1');
ax1 = axes(tab1);
x = linspace(0,10);
y = sin(x);
plot(ax1,x,y,'g-^ ')
grid on;
tab2 = uitab('Title','Tab2');
ax2 = axes(tab2);
surf(ax2,peaks)
grid on;

运行结果


5.实例1

程序

clc;
clear all;
close all;
x = -5:0.01:5;
f =exp(-2.*x).*sin(x);
figure1 = gcf;
ax1 = axes('Position', [0.1 0.1 0.8 0.8]);
%%'Position', [0.1 0.1 0.8 0.8]
%第1个参数表示图坐标区域左下角至图形窗口左边的占比
%第2个参数表示图坐标区域左下角至图形窗口下边的占比
%第3个参数表示图坐标区域的宽占比
%第4个参数表示图坐标区域的高占比
ax2 = axes('Position',[0.5 0.5 0.3 0.3]);
axes(ax1) %大窗口绘图
plot(x,f,'r-','lineWidth',2);
xlabel('$ x $', 'interpreter', 'latex')
ylabel('$ f(x) $', 'interpreter', 'latex')
title('局部放大图', 'fontsize', 12)
grid on
x11 = [0.45, 0.3];
y11 = [0.45, 0.3];
annotation('arrow',x11, y11);
axes(ax2) %小窗口绘图
x1 = -4:0.01:-3;
f1 =exp(-2.*x1).*sin(x1);
p1 = plot(x1,f1);
p1.LineWidth = 2;
p1.Color = 'g';
xlabel('$ x $', 'interpreter', 'latex')
ylabel('$ f(x) $', 'interpreter', 'latex')
grid on

运行结果


6.实例2

程序

clc;
clear;
close all;                                                                                                               
x=linspace(-2*pi,2*pi,100);% 生成曲线的x
x1=linspace(pi/6,pi/3,100); % 生成曲线的局部x                                                                                                                            
y=sin(x)-1;
y1=cos(x)-1;
y2=sin(x1);
y3=cos(x1);

figure;% 生成新的图形窗口            
plot(x,y,'r-*');
hold on;
plot(x,y1,'b-*');
axis('equal'); % 绘制整体曲线图 
ylim([-3 3]);
xlabel('x');
ylabel('y');
grid on;
axes('Position',[0.18,0.62,0.28,0.25]); % 生成子图                                                                             
plot(x1,y2,'r-*');
hold on;
plot(x1,y3,'b-*');                                                                                                                
xlim([min(x1),max(x1)]); % 设置坐标轴范围  
xlabel('x');
ylabel('y');
grid on;

运行结果

本文内容来源于网络,仅供参考学习,如内容、图片有任何版权问题,请联系处理,24小时内删除。

相关推荐

[西门子PLC] S7-1200PLC中所支持的数据类型详解

数据类型呢,就是讲数据的长度和属性的,也就是指定数据元素的大小,还有怎么去解释数据。每个指令起码得支持一种数据类型,有的指令还能支持好多种数据类型。所以呀,指令上用的操作数的数据类型一定得跟指令支持的...

C语言wctomb函数详解:宽字符到多字节字符的「翻译官」

核心定位wctomb是C语言中用于将宽字符转换为多字节字符的「翻译官」,它能将单个宽字符(wchar_t)转换为多字节字符(如UTF-8编码的中文)。就像一位翻译官,它能将一种语言(宽字符)翻译成...

Python 中数组和列表之间的区别(python列表和c语言数组区别)

在这篇文章中,您将了解Python中数组和列表之间的区别。Python列表Python列表是一种内置数据结构,是包含在方括号[]的元素集合。它们具有许多独特的属性,使它们与其他数据结构不同。有...

Linux内核设计与实现—进程管理(linux内核原理与实现)

进程进程就是处于执行期的程序(目标码存放在某种存储介质上)。进并不仅仅局限于一段可执行程序代码(Unix称其为代码段,textsection)。通常进程还要包含其他资源,像打开的文件,挂起的信号,...

实际工程项目中西门子S7-1500如何批量读取和写入机器人信号

方法一:DPRD_DAT:读取DP标准从站的一致性数据该指令适用于中央模块以及DP标准从站和PROFINETIO设备。可以使用以下数据类型:BOOL,BYTE,CHAR,WCHAR,WO...

C语言mbstowcs函数详解:多字节字符串到宽字符的「翻译官」

核心定位mbstowcs是C语言中用于将多字节字符串转换为宽字符字符串的「翻译官」,它能将多字节字符(如UTF-8编码的中文)转换为宽字符(wchar_t)。就像一位翻译官,它能将一种语言(多字节...

C语言mbtowc函数详解:多字节字符到宽字符的「翻译官」

核心定位mbtowc是C语言中用于将多字节字符转换为宽字符的「翻译官」,它能将单个多字节字符(如UTF-8编码的中文)转换为宽字符(wchar_t)。就像一位翻译官,它能将一种语言(多字节字符)翻...

西门子PLC系列连载|No.5 初识西门子1200PLC数据类型

导语:在之前的文章中我们介绍了PLC的相关基础知识和一些小的程序段,也讲解过博途软件使用的一些基本方法。那么我们在本章内容将为大家讲解关于西门子1200系列PLC的常用数据类型,以及这些数据类型的区别...

计算机中常见的字符编码及存储方式

常见的字符编码ASCII、GBK、GB2312、Unicode等等常识用多个字节来代表的字符称之为宽字符,而Unicode码只是宽字符编码的一种实现,宽字符并不一定是Unicodechar窄字...

西门子SCL高级语言之数据转换介绍

(整数转浮点数INT_TO_REAL)我们在做项目中经常用到各种类型的数据,这就需要转换(CONVERT)指令来转换,由于博途数据转换指令只有它一个,那我们就只记住它就可以了,注意设置需要转换...

SCL编程语言学习(2)-启保停电路(起保停电路plc程序)

“启保停”电路是学习过程中最常见的一个案例,也是最简单易懂的控制程序。如果采用梯形图编程,如图1所示。在实际工程的电路中,很少有这么简单的起保停电路,一般都需要考虑急停、限位、过载保护等多项因素,启停...

GCC的常用编译选项(gcc编译工具)

GCC(GNUCompilerCollection,GNU编译器套件)是由GNU开发的编程语言译器。对于C语言源代码文件,使用GCC生成可执行文件的过程不仅仅是编译的过程,而是要经历四个相...

「C语言」初始化数组,C语言中初始化特定列表和元素

如果没有显式地初始化数组变量,那么就会采用一般规则:如果数组具有动态存储周期,那么数组元素的值就是没有定义的。否则,所有的元素都会被默认地初始化为0(如果数组元素是指针,则会被初始化为NULL)。编...

C++11新特性(c++11新特性 lambda)

1、智能指针2、Lambda表达式3、线程库4、原子操作5、统一的列表初始化{}6、右值引用和移动构造7、引入nullptr指针8、类型推导auto和decltype智能指针:智能指针是一个...

西门子 S7-1200 PLC 数据类型详解

关注“PLC发烧友”,一起涨知识!回复:西门子全套,领西门子系列PLC电子资料包!数据类型用来描述数据的长度和属性,即用于指定数据元素的大小及如何解释数据,每个指令至少支持一个数据类型,而部分指令支持...

取消回复欢迎 发表评论: