MATLAB数值计算功能(一)(周二)

数据类型、向量的建立及运算、矩阵的建立及运算、数组运算、多项式的各类运算。

一、数据类型:

变量的声明与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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值