matlab之基本绘图函数
clear:清空内存中的变量; figure:强制生成一个新的个绘图窗口; syms x y t :声明变量; fplot(函数表达式,绘图区间); plot(横坐标向量,纵坐标向量,颜色/线形等参数) ezplot(函数表达式):简单的fplot,easy fplot axis([xmin xmax ymin ymax ...]):设置坐标轴显示范围
求极限
limit: 例:limit(F,x,a,left);对表达式F求极限,变量为x,从左边趋近a。 inf:正无穷; -inf:负无穷。
solve,linsolve
例:
A=[5 0 4 2;1 -1 2 1;4 1 2 0;1 1 1 1]; %矩阵的行之间用分号隔开,元素之间用逗号或空格 B=[3;1;1;0] X=zeros(4,1);%建立一个4元列向量 X=linsolve(A,B)
diff(fun,var,n):对表达式fun中的变量var求n阶导数。
例如:F=sym('u(x,y)*v(x,y)'); %sym()用来定义一个符号表达式 diff(F); %matlab区分大小写 pretty(ans) %pretty():用习惯书写方式显示变量;ans是答案表达式
fsolve(fun,x0,options) 其中fun为待解方程或方程组的文件名; x0位求解方程的初始向量或矩阵; option为设置命令参数
建立文件fun.m: function y=fun(x) y=[x(1)-0.5*sin(x(1))-0.3*cos(x(2)), ... x(2) - 0.5*cos(x(1))+0.3*sin(x(2))];
>>clear;x0=[0.1,0.1];fsolve(@fun,x0,optimset('fsolve'))
注: ...为续行符 m文件必须以function为文件头,调用符为@;文件名必须与定义的函数名相同;fsolve()主要求解复杂非线性方程和方程组,求解过程是一个逼近过程。
不定积分:int(fun,var) 例:求∫sinaxsinbxsincxdx
syms a b c x y=sin(a*x)*sin(b*x)*sin(c*x); int(y,x); pretty(ans)
定积分:int(fun,var,a,b) 其中a,b分别为上下限 foll
应用到的函数: I=imread('图像文件名') :读取图像数据,保存在矩阵I中; imshow(I) :显示灰度图像I,其他用法见matlab帮助; I2=im2double(I1) :把图像数组I1转换成double精度类型; D=dctmtx(n) :二维离散余弦变换函数,返回n*n离散余弦变换矩阵。
一个n*n的变换矩阵T被定义成: Tpq=1/sqrt(n) ,当p=0,0<=q<=M-1; Tpq=sqrt(2/n)*cos[pi*(2q+1)*p/2n] ,当1<=p<=M-1,0<=q<=M-1。
B=blkproc(A,[m n],fun,P1,P2...) :块操作函数。对图像A的每个不同的m*n块应用fun函数,P1,P2等为fun函数参数。在图像边缘用0来扩展;只有当fun的返回矩阵是m*n矩阵时,B和A的大小才相同。 figure:强制生成一个新的个绘图窗口;
JPEG图像压缩算法: 输入图像被分成8*8或16*16的小块,然后对每一小块进行二维DCT(离散余弦变换)变换,变换后的系数量化、编码并传输; JPEG文件解码量化了的DCT系数,对每一块计算二维逆DCT变换,最后把结果块拼接成一个完整的图像。在DCT变换后舍弃那些不严重影响图像重构的接近0的系数。 DCT变换的特点是变换后图像大部分能量集中在左上角,因为左上放映原图像低频部分数据,右下反映原图像高频部分数据。而图像的能量通常集中在低频部分。
实例程序: function Jpeg I=imread('D:\MATLAB7\toolbox\images\imdemos\cameraman.tif'); %该图片在安装matlab的目录中找,原图为灰度图象 I=im2double(I);%图像存储类型转换 T=dctmtx(8);%离散余弦变换矩阵 B=blkproc(I,[8 8],'P1*x*P2',T,T'); %对原图像进行DCT变换 mask=[1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]; B2=blkproc(B,[8 8],'P1.*x',mask); %数据压缩,丢弃右下角高频数据 I2=blkproc(B2,[8 8],'P1*x*P2',T',T); %进行DCT反变换,得到压缩后的图像 imshow(I) title('原始图像') figure; imshow(I2) title('压缩后的图像')
运行结果:
例:求方程组的空间曲线
1。化为参数方程组 x=t y=sqrt[t(1-t)] z=sqrt[1-x^2-y^2] 2。 程序 t=0:0.001:1; x=t; y=sqrt(t.*(1-t)); z=sqrt(1-x.^2-y.^2); plot3(x,y,z,z,-y,z) 其中.*为数组相乘,.^为数组乘方
mesh()函数语法: mesh(Z): mesh(X,Y,Z,C):其中C是用来定义相应点颜色等属性的数组
例:求x^2+y^2=z的空间曲面 x=-4:4; y=x; [X,Y]=meshgrid(x,y);%生成x,y坐标 Z=X.^2+Y.^2; mesh(X,Y,Z)
级数的求和与收敛
symsum(fun,var,a,b):其中fun是通项表达式,var为求和变量,a为求和起点,b为求和终点 例如:I为1/[n*(2n+1)]从1到正无穷的和,求I syms n; f1=1/(n*(2*n+1)); I=symsum(f1,n,1,inf)
计算结果为: I =2-2*log(2)
矩阵的基本运算
行列式求值:det(A) 矩阵加减:+、- 矩阵相乘:* 矩阵左除:A/B %相当于inv(A)*B 矩阵右除:A\B %相当于A*inv(B) 矩阵的幂:^ 矩阵转置:' 矩阵求共轭(实部相同,虚部相反):conj(X) 矩阵求逆:inv(X)
1。索引图像:包括一个数据矩阵X和一个色图阵MAP。矩阵元素值指向MAP中的特定颜色向量。 2。灰度图像:数据矩阵I,I中的数据代表了颜色灰度值。矩阵中的元素可以是double类型、8位或16位无符号的整数类型。 3。RGB图像:即真彩图像。矩阵中每个元素为一个数组,数组的元素定义了像素的红、绿、蓝颜色值。RGB数组可以是double类型、8位或16位无符号的整数类型。 4。二值图像:一个数据阵列,每个象素只能取0或1。
图像类型转换函数: dither() 通过颜色抖动,把真彩图像转换成索引图像或灰度图象转换成二值图像 gray2ind() 将灰度图像(或二值图像)转换成索引图像 grayslice() 通过设定的阈值将灰度图象转换成索引图像 im2bw() 通过设定亮度阈值将灰度、真彩、索引图象转换成二值图像 ind2gray() 将索引图象转换成灰度图象 ind2rgb() 将索引图象转换成真彩色图像 mat2gray() 将一个数据矩阵转换成一幅灰度图象 rgb2gray() 将真彩转换成灰度图象 rgb2ind() 将真彩转换成索引图象
图像数据类型及转换函数
默认情况下,matlab将图象中的数据存储为double型,即64位浮点数;matlab还支持无符号整型(uint8和uint16);uint型的优势在于节省空间,涉及运算时要转换成double型。
im2double():将图象数组转换成double精度类型 im2uint8():将图象数组转换成unit8类型 im2uint16():将图象数组转换成unit16类型
|
|