1、设置对数坐标系
set(gca,'XScale','log')%设置X轴为对数坐标轴
2、指定坐标轴刻度
yticks([a b c d])
3、同时设置曲线颜色和线形
plot(x,y,'--r')
%%注意,下面的写法是错误的
plot(x,y,'--','r')
4、matlab里sort函数
[m,n] = sort(a)
%m返回a从小到大排序后的结果
%n返回m中的各个值对应的序号(在a中的序号)。
5、matlab里生成随机序列
n = randperm(N)
%n返回从1-N之间的数字随机排列的一个结果,常用来生成初始解
6、MATLAB figure 右边框及上边框刻度设置
box on
7、绘制二维函数图像
(1)仅有离散数据,以
z
=
f
(
x
,
y
)
z=f(x,y)
z=f(x,y)举例,我们现有
1
×
2000
1\times 2000
1×2000的列向量x和y,以及z。现在相要绘制这个函数的二维图像。
scatter(x,y,20,z,'filled')%20是为了保证每个离散点的大小一致
具体图像如下所示,可以看出这些点的坐标并不是均匀排列的,因此很难绘制成连续的云图,当然也不是不可以,因为非结构网格似乎也是这样,但是绘制云图的方法我目前还没有找到。
(2)仅有输出数据,且已知输出参数(x,y)这些是均匀排布的,且每个数据占的格子是相同大小。并且已知计算域的排列nx*ny的大小
这时我们可以直接利用pcolor()或者contourf()函数来进行操作。
eg:假设我们现有数据VORTavg:
89351
×
1
89351\times 1
89351×1,已知nx = 199,ny = 451
绘制VORT的二维云图。
pcolor(reshape(VORTavg,nx,ny))
shading interp%消除格线
(2)我们还可以用contourf()来实现
contourf(reshape(VORTavg,nx,ny), 100, 'LineColor', 'none');%消除等值线
效果是一样的,这里就不放图了。
加上格子我们可以看到,每个格子的大小是一致的,这是我们事先知道的结果。
补充:这里突然想到非结构网格和第一种情况还不太一样,非结构网格虽然每个格子的大小都不是一致的,但是我们可以通过其临点信息得到每个格子的形状;但是对于第一种情况,我们只有格子的坐标,不知到每个格子的区域,且其分布又不是均匀的,所以只能以散点图的形式绘制函数图像,好像没有其它方法。
(3)假如说针对第一种情况,我们已知每个点是均匀分布的,这样就可以假设每个点占据相同大小的格子,然后用函数值对应的颜色填充每个格子,从而绘制出云图,其与第一种情况下的不同可以通过下图看出
这里有许多方法。
一、surf()函数
x = linspace(-2,2,20);
y = x';
z = x .* exp(-x.^2 - y.^2);%这里x,y是向量;z是矩阵
surf(x,y,z)
结果如下:
二、contourf()函数
x = linspace(-2,2,20);
y = x';
z = x .* exp(-x.^2 - y.^2);
[X,Y] = meshgrid(x,y);
% surf(x,y,z)
contourf(X,Y,z)%这里X,Y,z都是矩阵
其绘制结果如下:
未完待续,讲到这里,最后应该补充一个非结构网格绘图的算例,但是目前手头上没有这样的算例,以后再补充吧。
8、eval()函数
eval()函数可以将字符串以命令的方式进行执行
eg:
eval('clc')%该段命令等同于clc
9、对矩阵排序
[Z_new,index]=sort(Z_1D);
Y_new = Y_1D(index);