% 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
%
%
%


|
|