% Matlab创建有价值历史纪录(完整版) % “%”为注释符 % MATLAB % MATLAB是一种科学计算语言。它集成了计算,可视化和编程于一个易用的环境中,在此环境下,问题和解答都表达为我们熟悉的数学符号。典型的应用有: % * 数学和计算 % * 算法开发 % * 建模,模拟和原形化 % * 数据分析,探索和可视化 % * 科学与工程制图 % * 应用开发,包括图形用户界面的建立 %“MATLAB”代表MATrix LABoratory(矩阵实验室)。MATLAB最初是编写来提供给对由LINPACK和EINPACK工程开发的矩阵软件简易访问的。今天,MATLAB使用由LAPACK和ARPACK工程开发的软件,这些工程共同表现了矩阵计算软件中的技术展。 % %Matlab是一种高水平的矩阵/数组语言,含有控制流语句,函数,数据结构,输入/输出,和面向对象编程特征。它允许“小型编程”以迅速创立快速抛弃型程序,以及“大型编程”以创立完整的大型复杂应用程序。
%MATLAB是一个交互式的系统,其基本数据元素是无须定义维数的数组。这让你能解决很多技术计算的问题,尤其是那些要用到矩阵和向量表达式的问题。而要花的时间则只是用一种标量非交互语言(例如C或Fortran)写一个程序的时间的一小部分。 % % MATLAB已经与许多用户输入一同发展了多年。在大学环境中,它是很多数学类、工程和科学类的初等和高等课程的标准指导工具。在工业上,MATLAB是高产研究、开发和分析所选择的工具。 % % MATLAB以一系列称为工具箱的应用指定解答为特征。对多数用户十分重要的是,工具箱使你能学习和应用专门的技术。工具箱是是MATLAB函数(M-文件)的全面的综合,这些文件把MATLAB的环境扩展到解决特殊类型问题上。具有可用工具箱的领域有:信号处理,控制系统神经网络,模糊逻辑,小波分析,模拟等等。 % %MATLAB数学函数库汇集了大量计算的算法,范围从初等函数如:求和,正弦,余弦和复数的算术运算,到复杂的高等函数如:矩阵求逆,矩阵特征值,贝塞尔(Bessel)函数和快速傅立叶变换等。 % clear % 清除所有变量 clc % 清除命令窗口 % ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ % + ++++Matlab一些基本操作++++++++++++++++++++++++++++++++ % ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ help clc % clc的帮助文件,后接文件名则调出关于该函数过程的帮助内容 what % M、MAT、MEX 文件的目录列表 which mean % 该函数和文件的路径 eval('1+2*5+pi') % 执行由MATLAB 表达式构成的字串 clock % 挂钟 date % 日历 % etime % 计时函数 tic % 秒表开始计时 toc % 计时函数 cputime % CPU 时间(以秒为单位) % eps % 相对浮点精度,好像一个常数似的=2.2204e-016,不知道跟机子有无关 realmax % 最大浮点数 realmin % 最小浮点数 inf % 无穷大 nan % 非数值 % 显示字符超链接 disp('<a href="matlab:magic(4)">Generate magic square</a>') % cd % 当前工作目录,改变当前工作目录 dir % 当前目录下的文件列表 % getenv('OS') % 获取环境变量值,这里是获取操作系统的信息 computer % 计算机类型 % hostid % MATLAB 主服务程序的识别代号 % ver % 版本信息 version % MATLAB 版本号 % % 执行DOS 操作系统命令 !cd % % type mean % 列出M 文件内容,work中必须有该文件 % lookfor mean % 通过help 条目搜索关键字,由于执行速度慢,故注释掉 % doc mean % 装入超文本说明,载入帮助,由于要弹出帮助文档,故注释掉 % disp('<a href="matlab:doc mean">to Mean Help</a>') % flops % 浮点运算次数 % nargin % 函数输入变量数 % nargout % 函数输出变量数 % why % 简明的答案(我没有明白什么意思) % % ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ % + 2 ++++输入一些测试数据++++++++++++++++++++++++++++++++++ % ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ format long % 格式化显示为长字 % % 输入矩阵,“,”与空格等价,“;”为换行,即行的终点 % 用Matlab函数和内置常量产生 m=magic(3) % 魔方矩阵 p=pi % 圆周率 o=zeros(2,5) % 零矩阵 one=ones(2,5) % 全“1”矩阵 yi=eye(3) % 单位矩阵 rd=rand % 均匀分布的随机数矩阵 rn=randn % 正态分布的随机数矩阵 % % 笔者输入的一些矩阵,下面将用到它们 % v=[11,12,0,14;0,22,23,24;31,0,33,34] w=[0:7:30]; % 矩阵后的分号使得该矩阵隐藏显示 x=[11 12 13 0; 0 22 23 0; 31 0 33 0; 5.123456789 -5 6 0] x1=[4,3,0] % 创建两个向量 x2=[-3,4,0] y=4+i+2*j % i,j为虚数单位 z=-6.818; q=[z,pi,5.51,v(end)] % v(end)取v矩阵的最后一个数 format short q' % “'”为转置 % % 变量名、存储变量、删除变量、装载变量 % who % 列出工作区中所有变量名 whos % 列表显示工作区中所有变量具体信息 exist a % 检查a变量或函数是否存在,是为1,否为0 save allval % 保存变量为allval.mat,也可空格接变量名保存指定的变量 save valtxt.txt -ascii% 保存变量为valtxt.txt clear % 从内存中清除变量和函数,后可以接变量名 load('allval.mat') % 从磁盘文件中恢复变量 delete('allval.mat') % 删除文件allval.mat % % ++++++++++++++++++++++++++++++++++++++++++++++++++ % + 3 ++++矩阵++++++++++++++++++++++++++++++++++++++ % ++++++++++++++++++++++++++++++++++++++++++++++++++ % % 除了知道魔方阵和范德蒙矩阵外,别的都不太清楚,故而注释掉 % compan % 友矩阵,“未*” % hadamard % Hadamard 矩阵,“未*” % hankel % Hankel 矩阵,“未*” % hilb % Hilbert 矩阵,“未*” % invhilb % 逆Hilbert 矩阵,“未*” % magic % 魔方矩阵 % toeplitz % Toeplitz 矩阵,“未*” % vander % Vandermonde 矩阵,“未*” % cond % 计算矩阵条件数,“未*” % norm % 计算矩阵或向量范数,“未*” % rcond % Linpack 逆条件值估计,“未*” % % 3.1 矩阵的计算、排列和旋转======= % det(m) % 计算矩阵行列式值 sum(m) % 对m矩阵求和 min(m) % m矩阵每列的最小数 max(m) % m矩阵每列的最大数 [s,id]=sort(m) % 升序排列m矩阵,排列后赋给s,原址赋给id % sortrows % 按升序排列行 diag(w) % 建立和提取对角阵 fliplr(x) % 矩阵作左右翻转 flipud(x) % 矩阵作上下翻转 rot90(v) % 矩阵旋转90 度 % ' % 矩阵的转置 reshape(v,2,6) % 改变矩阵大小 tril(v) % 提取矩阵的下三角部分 triu(v) % 提取矩阵的上三角部分 any(x) % 向量的任一元为真,则其值为真 all(x) % 向量的所有元为真,则其值为真 find(w) % 找出x的非零元素的索引号 % % 3.2 矩阵性质=============== % rank(m) % 计算矩阵秩 trace(m) % 计算矩阵的迹 eig(m) % 求特征值和特征向量 poly(m) % 求特征多项式 hess(m) % Hessberg 形式 % qz % 广义特征值,“未*” null(x) % 零矩阵 orth(x) % 正交化 pinv(m) % 矩阵伪逆 % % 3.3 矩阵分解=============== % X = pascal(5) % 帕斯卡矩阵 chol(X) % Cholesky 分解 lu(m) % 高斯消元法求系数阵 inv(m) % 矩阵求逆 qr(m) % 正交三角矩阵分解(QR 分解) schur(x) % Schur 分解 % gdf2rdf % 变复对角矩阵为实分块对角形式,“未*” % balance % 矩阵均衡处理以提高特征值精度,“未*” % % corrcoef(v) % 计算互相关系数 cov(x) % 计算协方差矩阵 geomean(v) % 计算样本的几何平均值 harmmean(m) % 计算样本数据的调和平均值 iqr(v) % 计算样本的四分位差 kurtosis(v) % 计算样本的峭度 mad(v) % 计算样本数据平均绝对偏差 mean(m) % 计算样本的均值 median(m) % 计算样本的中位数 range(x) % 样本的范围 skewness(v) % 计算样本的歪度 std(v) % 计算样本的标准差 var(v) % 计算样本的方差 % moment % 计算任意阶的中心矩,没有研究或没有研究通它的用法下简称“未*” % prctile % 计算样本的百份位数,“未*” % trimmean % 计算包含极限值的样本数据的均值“未*” % % ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ % + 4 ++++数学函数++++++++++++++++++++++++++++++++++++++++++ % ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ size(x) % 矩阵x的尺寸 length(x) % 向量x的长度,矩阵的行数 tan([p p/3 p/4 p/6]) % 正切 atan(x) % 反正切 fix(q) % 朝零方向取整,整数部分 floor(q) % 朝负无穷大方向取整 ceil(q) % 朝正无穷大方向取整 round(q) % 朝最近的整数取整 rem(9,4) % 除后取余 sign(z) % 符号函数 factor(210) % 质因子 % abs(z) % 绝对值 abs(y) % 复数的模 gcd(12,15) % 最大公因数 lcm(12,15) % 最小公倍数 % conv2 % 二维卷积,摄影测量要用到卷积 % conv % 卷积和多项式乘法 % % 向量 ---〉 % dot(x1,x2) % 向量点集 cross(x1,x2) % 向量叉集 % % 复数 real(y) % 复数实部 imag(y) % 复数虚部 angle(y) % 复数的辐角 conj(y) % 共轭复数 % % 对数指数 exp(m) % e的x次幂 log(m) % e为底的对数 log10(m) % 10为底的对数(也叫常用对数) sqrt(x) % x的平方根 % % % 数据类型转化=========== % strx=num2str(x) % 变数值为字符串 mm=int2str(m) % 变整数为字符串 numx=str2num(strx) % 变字符串为数值 % % 数制转化 % hex2num % 变十六进制为IEEE 标准下的浮点数 % hex2dec % 变十六制数为十进制数 % dec2hex % 变十进制数为十六进制数 % % 下面告诉你一个不用查t分布表就可以知道相应值的函数 icdf('t',0.95, % 续行 20) % 自由度为20的t分布95%下分位数,即t分布表中n=20,a=0.05对应的值 icdf('t',1-0.10,8) % 查t分布表中n=8,a=0.10对应的值 % % 简单的绘制平面图 x_ = -pi:.1:pi; y_ = sin(x_); plot(x_,y_) set(gca,'XTick',-pi:pi/2:pi) % 设置X轴的刻度 set(gca,'XTickLabel',{'-pi','-pi/2','0','pi/2','pi'}) % 标定X轴的量数 xlabel('-\pi \leq \theta \leq \pi') ylabel('y=sin(\theta)') title('Plot of y=sin(\theta)') text(-pi/4,sin(-pi/4),'\leftarrow sin(-\pi/4)', 'HorizontalAlignment','left') set(findobj(gca,'Type','line','Color',[0 0 1]), 'Color','red', 'LineWidth',2) % % figure(2) t = 0:pi/10:2*pi; [X_,Y_,Z_] = cylinder(4*cos(t)); subplot(2,2,1); mesh(X_) subplot(2,2,2); mesh(Y_) subplot(2,2,3); mesh(Z_) subplot(2,2,4); mesh(X_,Y_,Z_) % % % % reply = input('Do you want more? Y/N [Y]: ', 's'); % if isempty(reply) % reply = 'Y'; % end % % 注意:与C语言的switch语句不同的是,MATLAB的switch是不会落空的。 % 如果情形1是真,则其他语句不执行。因此,不需用break语句。 n=input('请您输入一个正整数:') if isempty(n) n = 5 end switch rem(n,3) case 0 disp('你输入的数除以3的余数为:0') case 1 disp('你输入的数除以3的余数为:1') case 2 disp('你输入的数除以3的余数为:2') otherwise error('错误!!请检查数据是否合法') end % % %
|
|