[转载〕 Matlab创建有价值历史纪录(完整版)
% 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
%
%
%