matlab基础Word文件下载.docx
《matlab基础Word文件下载.docx》由会员分享,可在线阅读,更多相关《matlab基础Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
令。
建议要用的时候再利用matlab自带的帮助文档来搜索有用的函数和工具包。
matlab的
函数和命令都是比较人性化的,比如想要搜索读取fits文件的函数,搜索fits就能够搜到
fitsread函数;
需要将读出的fits数据重新做图,搜索image就可以找到imagesc函数。
从
书和别人的文档都只能学到有限的比较系统的操作,看帮助文档能发现更多的东西并整理
出自己的使用方法。
最后要说明的是,C必须用循环才能做到的事情Fortran和matlab用矩阵和数组运算就能做
到,相对效率提高了很多;
而对于一些运算量非常大的程序还是推荐用Fortran,因为相比
之下matlab的运算速度比Fortran慢很多;
而网上很多现有的天文软件包都是用fortran写
的(比如由宇宙学参数计算模拟数据的CAMB程序和宇宙模型可能性预测LIKELIHOOD程序)
,虽然matlab也有很多天文软件包,但相对fortran还是逊色不少。
1、数据类型,声明及赋初值
matlab中存储的数据类型(class)有以下几种:
而实际上matlab不需要对变量做声明,当它发现一个新的变量名时,将默认将其为双精度
浮点类型(double)并分配内存空间。
(这比C和Fortran方便了许多,但在完成大运算量的
程序时就显得浪费存储空间了)
当需要把变量a从double转为其他类型的时候,比如要转为int16型,可以使用以下命令:
a=int16(a)
当需要创建一个字符型变量x并对其赋初值时,用以下格式:
x='
字符串'
;
注意:
(1)在命令后加“;
”表示不在commandwindow中显示结果,而对上例来说如果不加“;
”
则会显示所赋字符串内容。
(2)所有的命令必须在英文输入状态下,如果使用中文输入状态下全角的“;
”,将被处
理为非法字符。
其中logical,cell和structure为逻辑,元胞和构架数组类型,将在后面的数组部分提到
;
functionhandle为函数句柄类型,将在后面的“M脚本文件和M函数文件、函数句柄”部
分提到;
java类供JAVAAPI应用程序接口使用,本文不进行说明。
最后说明一下,matlab也支持复数操作,赋值的时候直接输入即可,比如:
a=1+2i;
2、基本输入输出
输入:
v=input('
message'
)
%将用户输入的内容赋给变量v
'
s'
%将用户输入的内容作为字符串赋给变量v
keyboard
%用户可以从键盘输入任意多个指令
v=yesinput('
prompt'
default,possib)
%prompt为文字提示,default为缺省设置“值”,possib为设置值的范围。
%该指令无法在notebook中运行。
输出:
disp(a)
%显示变量a的内容,另一种显示变量内容的方法是输入变量名,但是这样显示的结果带有
“a=”。
1、运算符
(1)关系操作符
==
~=
>
=
<
(2)涉及相互关系的集合运算符
&
|
~
xor
%xor相异元素返回1,相同元素返回0
2、IF
(1)基本:
if逻辑判断式
……
end
(2)
多重判断:
......
elseif逻辑判断式
else
逻辑判断式
end
3、switch-case结构
和C的switch语句一样
switch变量
case数值1
……
case数值2
case数值k
%当变量等于数值k的时候,执行本组命令,然后跳出该结构。
otherwise
%该命令可以不存在,在变量不等于前面所有的检测值的时候,执行此组命
endcase
4、try-catch结构
try
%只有当matlab执行本组命令发生错误时,后一组命令才会被执行
catch
%如果此组命令执行又出错,matlab将终止该结构。
%可以调用lasterr函数查询出错原因。
如果函数的运行结果为一个空串,则表明这组命令
被成功执行了。
1、while
while表达式
2、for
forx=数值
%其中的数值可以是数组;
或者是类似下面的表达“1:
4”,表示从1到4循环;
还可以是“
1:
0.1:
4”,表示以0.1为步长从1到4循环。
1、数值数组
matlab中数组不需要声明。
(1)对一维数值数组赋初值
逐个元素输入:
x=[1
2
pi/2]
冒号生成:
x=1:
4
定数线性采样法:
x=linspace(a,b,n)
%相当于第一个数为a,最后一个数为b,以n为采样点数等间距采样。
x=logspace(a,b,n)
%相当于第一个数为10a,最后一个数为10b,以n为采样点数等间距采样。
(2)对一维数值数组的寻访
x(3)
%寻访第三个元素
x([123])
%寻访第1,2,3个元素
x(1:
3)
%寻访第1到3个元素
x(3:
-1:
1)
%由前三个元素倒排成子数组
x(find(x>
0.5))
%由大于0.5的元素构成的子数组
(3)对二维数值数组赋初值
逐个赋值:
x=[1,2,3;
3,4,6;
7,8,9]
%“;
”为二维数组“行”的分隔符号,而“,”和空格为同一行元素的分隔符。
整列赋值:
x(:
[4,5])=4
%第4、5列赋值为4
元素重排:
A=reshape(1:
9,3,3)
%将1到9重新排列成一个(3*3)矩阵,注意matlab是列“优先”,即先排第一列再排第二
列,而不是按行来排。
(4)二维数组元素的标识和寻访
“全下标”标识:
A(3,5)
%第3行第5列元素
“单下标”标识:
对于一个(m*n)维数组A中第r行第c列元素,其“单下标”表示为:
A(l)
%这里l=(c-1)*m+r
2、数组运算和矩阵运算
(1)数组运算
指令
含义
A.'
相当于conj(A'
),conj的作用help一下吧……
A=s
把标量s赋给A的每个元素
s+B
标量s分别与B元素之和
s-B,B-s
标量s分别与B元素之差
s.*A
标量s分别与A元素之积
s./B,B.\s
s分别被B的元素除
A.^n
A的每个元素自乘n次
A.^p
对A的各个元素分别求非整数幂
p.^A
以p为底,分别以A的元素为指数求幂
A+B
对应元素相加
A-B
对应元素相减
A.*B
对应元素相乘
A./B
A的元素被B的对应元素除
B.\A
同上
exp(A)
以e为底,分别以A的元素为指数求幂
log(A)
对A的各个元素求对数
sqrt(A)
对A的各个元素求平方根
f(A)
求A各个元素的函数值
A#B
对应元素的关系运算,#代表关系运算符
A@B
对应元素的逻辑运算,@代表逻辑运算符
(2)矩阵运算
A'
共轭转置
s*A
S*inv(B)
B阵的逆乘s
A^n
A阵为方阵时,自乘n次
A^p
方阵A的非整数乘方
p^A
A阵为方阵时,标量的矩阵乘方
矩阵相加
矩阵相减
A*B
矩阵相乘
A/B
A右除B
B\A
A左除B
expm(A)
A的矩阵指数函数
logm(A)
A的矩阵对数函数
sqrtm(A)
A的矩阵平方根函数
funm(A,'
FN'
)
一般矩阵函数
3、逻辑数组
看例子就明白了:
A=zeros(2,5);
%预生成一个(2*5)全零数组
A(:
)=-4:
5;
%运用“全元素”方法向A赋值
L=abs(A)>
3
%产生一个与A同维的“0-1”逻辑值数组
islogical(L)
%判断L是否逻辑值数组。
输出若为1,则是
X=A(L)
%把L中逻辑值为1对应的A元素取出
4、字符串数组
(1)字符串数组赋初值
S=['
aa'
'
bb'
]
或者:
S=char('
还可以:
S=str2mat('
'
%这里空串会产生空行
而:
S=str2cat('
%这里空串不会产生空行
(2)字符串操作函数
int2str
%把整数数组转换为串数组
num2str
%把非整数数组转换为串数组
mat2str
%把数值数组转换为串数组
%请使用help搜索其他的字符串操作函数。
5、元胞数组
元胞数组和一般数值数组和字符串数组不同,其元素可以是任意类型和大小的对象。
这
和C的结构型数组有些类似。
(1)创建元胞数组
有以下两种创建方式:
外标识元素赋值:
a=char('
);
b=1:
9;
c=2:
d=[1+2i];
A(1,1)={a};
A(1,2)={b};
A(2,1)={c};
A(2,2)={d};
内涵的直接赋值:
A{1,1}=a;
A{1,2}=b;
A{2,1}=c;
A{2,2}=d;
(2)元胞数组内容的调取
注意在这里()访问的是元胞,用{}访问的是元胞中存储的内容。
比如:
a=A(1,1)
显示:
a=
[12
char]
a=A{1,1}
aa
bb
所以