用matlab绘图时,如何只设定一个轴范围?
例如:y=f(x)函数非常复杂,y的范围非常不确定,只期望观察到x在1.7到2.3之间的y值。
请问如何编程,用什么命令较好?请大家不吝赐教,谢谢! 展开
用matlab绘图时,只设定一个轴范围可以通过以下方法来实现:
使用 axis([XMIN XMAX YMIN YMAX]) ,对于不需要设置范围的轴,使用参数-inf,inf,即正负无穷之间
示例代码:
>> x = 1:10;
>> y = x.^2;
>> subplot(3,1,1)
>> plot(x,y,'r')
>> subplot(3,1,2)
>> plot(x,y,'g')
>> xlim([0,15])
>> subplot(3,1,3)
>> plot(x,y,'b')
>> axis([-1,12,-inf,inf])
绘图结果:
例子1:
y=f(x)函数非常复杂,y的范围非常不确定,只期望观察到x在1.7到2.3之间的y值。
xlim([1.7 2.3])
clc;clear
x=0:pi/20:2*pi;
y=sin(x);
plot(x,y)
xlim([ -pi 2*pi])
例子2:
有一个1*10000的矩阵X,需要把它画出来。要求是每一百点给出一个坐标刻度,刻度为y1,y2,y3,.....,y100
也就是:X(1)到X(100)画出在坐标轴的X(1)位置标出y1
X(101)到X(200)画出在坐标轴的X(101)位置标出y2
X(201)到X(300)画出在坐标轴的X(201)位置标出y3
......
X(9901)到X(10000)画出在坐标轴的X(9901)位置标出y100
clear,clc
t = 1:1:100;
y = sin(0.1*t);
plot(t,y)
set(gca,'XTick',1:20:100,'XTickLabel',1:20:100)
扩展资料:
MATLAB系统由MATLAB开发环境、MATLAB数学函数库、MATLAB语言、MATLAB图形处理系统和MATLAB应用程序接口(API)五大部分构成。
开发环境
MATLAB开发环境是一套方便用户使用的MATLAB函数和文件工具集,其中许多工具是图形化用户接口。它是一个集成的 用户工作空间,允许用户输入输出数据,并提供了M文件的集成编译和调试环境,包括MATLAB桌面、命令窗口、M文件编辑调试器、MATLAB工作空间和在线帮助文档。
数学函数
MATLAB数学函数库包括了大量的计算算法。从基本算法如四则运算、三角函数,到复杂算法如矩阵求逆、快速傅里叶变换等。
语言
MATLAB语言是一种高级的基于矩阵/数组的语言,它有程序流控制、函数、数据结构、输入/输出和面向对象编程等特色。用这种语言能够方便快捷建立起简单运行快的程序,也能建立复杂的程序。
图形处理
图形处理系统使得MATLAB能方便的图形化显示向量和矩阵,而且能对图形添加标注和打印。它包括强大的二维三维图形函数、图像处理和动画显示等函数。
程序接口
MATLAB应用程序接口(API)是一个使MATLAB语言能与C、Fortran等其它高级编程语言进行交互的函数库。该函数库的函数通过调用动态链接库(DLL)实现与MATLAB文件的数据交换,其主要功能包括在MATLAB中调用C和Fortran程序,以及在MATLAB与其它应用程序间建立客户、服务器关系。
用matlab绘图时,只设定一个轴范围可以通过以下方法来实现:
使用 axis([XMIN XMAX YMIN YMAX]) ,对于不需要设置范围的轴,使用参数-inf,inf,即正负无穷之间
示例代码:
>> x = 1:10;
>> y = x.^2;
>> subplot(3,1,1)
>> plot(x,y,'r')
>> subplot(3,1,2)
>> plot(x,y,'g')
>> xlim([0,15])
>> subplot(3,1,3)
>> plot(x,y,'b')
>> axis([-1,12,-inf,inf])
绘图结果:
扩展资料
在MATLAB中显示图像(影像)的直方图时,横轴范围往往是[0,255]。在显示的时候,默认显示的范围往往大于这个范围,大出的的范围没有实际意义。
如果使用: axis([XMIN XMAX YMIN YMAX]) 就必须要知道YMIN和YMAX,因为axis对其参数的维数的要求是4、6或8;但对于图像的直方图,其纵轴范围往往不确定,所以横轴范围应该单独设定: xlim([XMIN XMAX]) 同理,在其他情况下,可以使用ylim、zlim.
一般会用axis([XMIN,XMAX,YMIN,YMAX]),但是假如只想对一个坐标轴如X轴或Y轴或Z轴设定范围, 可以使用一下数据:
xlim([XMIN,XMAX]);%对X轴设定显示范围
ylim([YMIN,YMAX]);%对Y轴设定显示范围
zlim([ZMIN,ZMAX]);%对Z轴设定显示范围
例如:数字图像灰度统计图
% 数据生成及展示(真实情况可以用数字图像代替)
set(groot,'defaultAxesLineStyleOrder','remove','defaultAxesColorOrder','remove');
%每次使用记得清除上次设置的参数,否则设置的参数会被保留下来
x=1:255;y=rand(1,255);y=y';%y是行向量还是列向量都可以
n=length(x);
stem(x,y, 'Marker', 'none');
title('未设置坐标轴的区间','fontsize',14);
参考资料来源:百度百科 - MATLAB
1.同时设置subplot的多幅图像的axis
peaks;
axis tight %Set the axis limits to equal the range of the data
axis square
axis 'auto x' //x轴坐标上下限自动调整
axis off %Plot a surface without displaying the axes lines and background.
set(gca,'Visible','off'); //消除坐标轴,显示范围的大小没有改变,同上句
tmp = gca;
tmp.XAxis.Visible = 'off'; //隐藏X轴的
//上面一句也可以隐藏Ticks,同时Box的上端也隐藏了,这就使得图像看上去不太好看
tmp.XTick= []; //这一句可以只隐藏Ticks
//更多特性可参考Matlab帮助文档,查找"Axes Properties"
//Create a figure with two subplots.set the axis limits for the subplots to the same values.
x1 = linspace(0,10,100);y1 = sin(x1);
ax1 = subplot(2,1,1);plot(ax1,x1,y1)
x2 = linspace(0,5,100);y2 = sin(x2);
ax2 = subplot(2,1,2);plot(ax2,x2,y2);
axis([ax1 ax2],[0 10 -1 1])
2.在原图上继续作图,而不改变原坐标系的区间
x = linspace(0,10);y = sin(x);plot(x,y)
y2 = 2*sin(x);hold on
axis manual %关键步骤,冻结axis 可以对比不加该语句的结果
plot(x,y2);hold off
3.改变坐标系的方向(指向)
C = eye(10); pcolor(C);
colormap summer
//Reverse the coordinate system so that the y values increase from top to bottom.
axis ij; //第i行,第j列
//上下两条语句等价
set(gca,'Ydir','reverse');
//y轴默认是指向上的
实际应用:结合axis,axes,colorbar等工具,制作一个数字图像灰度统计图。
//数据生成及展示(真实情况可以用数字图像代替)
set(groot,'defaultAxesLineStyleOrder','remove','defaultAxesColorOrder','remove');
//每次使用记得清除上次设置的参数,否则设置的参数会被保留下来
x=1:255;y=rand(1,255);y=y';//y是行向量还是列向量都无所谓
n=length(x);
stem(x,y, 'Marker', 'none');
title('未设置坐标轴的区间','fontsize',14);
4.坐标轴区间的自动设置(适用于直方图的显示)
//Get x/y limits of axes using axis
hist_axes = gca;
limits = axis(hist_axes);
if n ~= 1 //当只有一个值时设置x坐标轴
limits(1) = min(x);
else
limits(1) = 0;
end
limits(2) = max(x);
var = sqrt(y'*y/length(y));
limits(4) = 2*var; //只改变了y轴显示的高度
axis(hist_axes,limits);
title('设置了的坐标轴区间','fontsize',14);
5.改变图像的位置,宽和高,隐藏X轴的标注
// In GUIDE, default axes units are characters. In order for axes repositiong
// to behave properly, units need to be normalized.
hist_axes_units_old = get(hist_axes,'units');
set(hist_axes,'Units','Normalized');
//隐藏X轴的标注
//hist_axes.XAxis.Visible = 'off';
//上面一句也可以隐藏Ticks,同时Box的上端也隐藏了,这就使得图像看上去不太好看
//下面这一句可以只隐藏Ticks;
hist_axes.XTick= [];
//Get axis position and make room for others.
pos = get(hist_axes,'pos');
set(hist_axes,'pos',[pos(1) 0.15 pos(3) 0.75])
set(hist_axes,'Units',hist_axes_units_old); //坐标向上移动了,相应也调整了整个图众向比例
title('移动了的坐标原点','fontsize',14);
//设置ColorBar
c = colorbar('position',[pos(1) 0.1 pos(3) 0.05], 'location','southoutside');
c.Ticks= 0:0.125:1;
c.TickLabels = ceil((0:0.125:1)*255); //使用floor函数,Ticks与真实值似乎有偏差
c.Box = 'off'; //取消显示ColorBar的框框,这样使ColorBar的上框线看起来不粗
c.TickDirection = 'both';
colormap gray;
//colorbar最左下角点的横坐标、纵坐标、宽度、高度
title('一个灰度统计图的绘制就完成了','fontsize',14);
1、首先打开matlab绘图,这个程序绘图的结果y轴坐标范围不好,需要设定一个轴的范围。
2、用二维的话,则输入命令【axis([xmin xmax ymin ymax])】。
3、用三维的话,则输入命令【axis([xmin xmax ymin ymax zmin zmax])】。
4、将这个语句添加到plot作图语句后面来设置,如图所示。
5、这样,就设定一个轴范围了,图形全部在坐标轴范围内,是x最小,xmax是x最大。
扩展资料
强大的画图功能是Matlab的特点之中的一个,Matlab提供了一系列的画图函数,用户不须要过多的考虑画图的细节,仅仅须要给出一些基本参数就能得到所需图形,这类函数称为高层画图函数。此外,Matlab还提供了直接对图形句柄进行操作的低层画图操作。
这类操作将图形的每个图形元素(如坐标轴、曲线、文字等)看做一个独立的对象,系统给每个对象分配一个句柄,能够通过句柄对该图形元素进行操作,而不影响其它部分。
在绘制图形时,Matlab能够自己主动依据要绘制曲线数据的范围选择合适的坐标刻度,使得曲线能够尽可能清楚的显示出来。所以,普通情况下用户不必选择坐标轴的刻度范围。可是,假设用户对坐标不惬意,能够利用axis函数对其又一次设定。
其调用格式为:
axis([xmin xmax ymin ymax zmin zmax])
假设仅仅给出前四个参数,则依照给出的x、y轴的最小值和最大值选择坐标系范围,绘制出合适的二维曲线。假设给出了所有参数,则绘制出三维图形。
axis函数的功能丰富,其常常使用的使用方法有:
axis equal :纵横坐标轴采用等长刻度
axis square:产生正方形坐标系(默觉得矩形)
axis auto:使用默认设置
axis off:取消坐标轴
axis on :显示坐标轴
还有:给坐标加网格线能够用grid命令来控制,grid on/off命令控制画还是不画网格线,不带参数的grid命令在两种之间进行切换。
给坐标加边框用box命令控制。和grid一样使用方法