posts - 195, comments - 34, trackbacks - 0, articles - 1
 
[转载〕 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
%
%
%




只有注册用户登录后才能发表评论。


网站导航: