数据类型、向量的建立及运算、矩阵的建立及运算、数组运算、多项式的各类运算。
一、数据类型:
变量的声明与C语言类似,不过在声明全局变量时要在前面加上global.
1.常量声明时遵循下面几个:i,j虚数变量平方为-1,pi圆周率,eps浮点数的相对精度10-52次方,NaN Not-a-Number,表示不定值,Realmin最小的正浮点数2的负1022次方,Realmax最大正浮点数2的正1022次方,Inf无穷大。 当定义一个分数,分母为0而分子不为0时计算结果为Inf,分子分母均为0时,结果为NaN。在重定义一个已解决定义过的数时,比如pi=1,需要将pi清理一下,输入语句clear pi;,之后就会将pi重新定义为3.14159...在MATLAB中%后面即为注释,其中,^与sqrt分别代表平方与开方。MATLAB完全继承了C语言的风格与规则,如正负号,小数点,科学计数法等。
2.字符串
1).在MATLAB中所有的字符串都用单引号设定后输入或赋值,定义一个字符串s,size(s)会得到两个值,第一个值为数组维数,一维,二维,第二个为数组长度(包含空格).
>> s3=char('s','d','f');
>> s3' %"'"的作用是将字符数组显示为行变量。
ans =
sdf
2).字符串和数组之间的转换,可以用double来实现。
>> double(s3)'
ans =
115 100 102
字符数组转换为字符串可以用cellstr来实现
>> cellstr(s3)
ans =
's'
'y'
'm'
'b'
'o'
'l'
'i'
'c'
3).字符数组的生成:函数char可以用来生成字符数组或矩阵。
>> s3=char('s','y','m','b','o','l','i','c');
>> s3' %"'"的作用是将字符数组显示为行变量
ans =
symbolic
MATLAB命令集在:http://www.doc88.com/p-990520148153.html
4)数值数组与字符串之间的转化:
>> a=[1:5]; %生成数值数组a
>> b=num2str(a); %将a转换为字符数组后赋值给b
>> a*2
ans =
2 4 6 8 10
>> b*2
ans =
98 64 64 100 64 64 102 64 64 104 64 64 106
将数值数组转化为字符数组后,虽然表面上相同,但是此时其为字符而非数字。
5)字符串操作
eval()函数的功能就是将括号内的字符串视为语句并运行生成hilbert矩阵:
>> n=4;
>> t='1/(i+j-1)';
>> a=zeros(n);
>> for i=1:n
for j=1:n
a(i,j)=eval(t);
end
end
>> a
a =
1.0000 0.5000 0.3333 0.2500
0.5000 0.3333 0.2500 0.2000
0.3333 0.2500 0.2000 0.1667
0.2500 0.2000 0.1667 0.1429
用eval函数执行操作命令:
>> d='cd';
>> eval(d)
C:\Users\17803897883\Documents\MATLAB
3.单元型变量
(1).定义(一种以任意形式的数组为元素的多维数组)
单元型变量有两种定义方法:一是用赋值语句直接定义,二是由cell函数预先分配存储空间然后对单元元素逐个赋值。在直接赋值时与矩阵定义时使用的[ ]不同,单元型变量的定义需要用大括号,中间用逗号隔开
>> A=[1,2,3,4];
>> B={1:4,A,'abcd'}
B =
[1x4 double] [1x4 double] 'abcd'
上面与下面等价
>> B{1,1}=1:4;
>> B{1,2}=A;
>> B{1,3}='abcd';
单元型变量的引用应当采用大括号作为下标的标识,而小括号作为下标标识时将只显示该元素的压缩形式。
>> B{2}
ans =
1 2 3 4
>> B(2)
ans =
[1x4 double]
单元型变量可以进行自身嵌套,而矩阵的元素不可能是矩阵
>> C={1:4,A,B}
C =
[1x4 double] [1x4 double] {1x3 cell}
>> C{3}{3} %嵌套中的单元型变量元素的引用
ans =
abcd
(2).单元型变量的相关函数
cell生成单元型变量 cellfun对单元型变量中元素作用的函数 celldisp显示单元型变量的内容
cellplot图形显示单元型变量的内容 num2cell将数值数组转化为单元型变量 deal输入输出处理
cell2struct将单元形变量转换为结构型变量 iscell判断是否为单元型变量 reshape改变单元数组的结构
>> A={1,2;3,4};
>> B{1,1}=1:4;
>> B{1,2}=A;
>> B{1,3}='abcd';
>> cellfun('islogical',B) %判断B中元素是否为逻辑变量
ans =
0 0 0
>> %可用于cellfun函数的操作还有isreal,isempty,length,ndims等
>> celldisp(B) %完全显示单元型变量B
B{1} =
1 2 3 4
B{2}{1,1} =
1
B{2}{2,1} =
3
B{2}{1,2} =
2
B{2}{2,2} =
4
B{3} =
abcd
>> cellplot(B)
>> iscell(B)
ans =
1
>> C={1:4,A,B}
C =
[1x4 double] {2x2 cell} {1x3 cell}
>> C{3}{3}
ans =
abcd
>> size(C) %查看C的维数
ans =
1 3
>> reshape(C,3,1)
ans =
[1x4 double]
{2x2 cell }
{1x3 cell }
>> size(ans) %查看改变后的维数
ans =
3 1
4.结构型变量
(1).结构性变量的定义
结构体的定义也有两种方法:一是直接赋值定义二是由函数struct定义。直接赋值时,应当指出结构中的属性名,并以指针操作符“.”来连接结构体变量名与属性名。对该属性直接赋值:
>> A.a1='abcd';
>> A.a2=1;
>> A.a3=[1,2,3,4];
>> A
A =
a1: 'abcd'
a2: 1
a3: [1 2 3 4]
结构型变量也可以组成数组,即结构型数组,具体做法是对给定变量下标赋值:
>> B=[1,2;3,4];
>> A(2).a1='efgh';
>> A(2).a2=2;
>> A(2).a3=B;
>> A
A =
1x2 struct array with fields:
a1
a2
a3
在MATLAB中,提供了函数struct来定义结构体变量,其常用调用格式如下:
结构体变量名=struct(元素名1,元素值一,元素名2,元素值二,...)
>> C=struct('c1',1,'c2',B,'c3','abcd')
C =
c1: 1
c2: [2x2 double]
c3: 'abcd'
与单元型变量相似,结构体变量也可以嵌套定义。
> C.c1=A
C =
c1: [1x2 struct]
c2: [2x2 double]
c3: 'abcd'
>> C.c1(1).a1
ans =
abcd
(2).结构型变量的相关函数
struct 创建或转换结构型变量 rmfield 删除结构变量中的属性
fieldnames 得到结构体变量的属性名 isfield 判断是否为结构型变量的属性
getfield 得到结构体变量的属性值 isstruct 判断变量是否为结构型变量
setfield 设定结构型变量的属性值
>> fieldnames(C) %调出结构型变量C的所有属性名
ans =
'c1'
'c2'
'c3'
>> iscell(ans) %函数的结果为一单元型变量
ans =
1
>> D=getfield(C,'c1') %该函数的作用相当于D=C.c1
D =
1x2 struct array with fields:
a1
a2
a3
>> C=setfield(C,'c1',2) %值得注意的是必须将结果赋予该结构型变量,否则将不会实现更改属性值的作用
C =
c1: 2
c2: [2x2 double]
c3: 'abcd'
>> C=rmfield(C,'c1') %删除c1属性
C =
c2: [2x2 double]
c3: 'abcd'
>> isfield(C,'c2') %判断是否为结构型变量的属性
ans =
1
>> isstruct(C) %判断是否为结构型变量
ans =
1