MATLAB基础一——矩阵运算与字符串

MATLAB基础一

  1. 当前文件夹
    cd e:\work

  2. 设置文件搜索路径
    path(path,‘e:\work’)

  3. 分别求一个三位正整数的个位数字、十位数字和百位数字

>>m=345;
>>m1=rem(m,10)
m1=5
>>m2=rem(fix(m/10),10)
m2=4
>>m3=fix(m/100)
m3=3

  1. 求[1,100]区间的所有素数

>>x=1:100;
>>k=isprime(x);
>>k1=find(k);
>>p=x(k1)
p =
1 至 8 列
2 3 5 7 11 13 17 19
9 至 16 列
23 29 31 37 41 43 47 53
17 至 24 列
59 61 67 71 73 79 83 89
25 列
97

  1. save命令:创建内存变量文件
    >>save mydata a x

  2. load命令:装入内存变量文件
    >>load mydata

  3. 利用已建好的矩阵建立更大的矩阵:一个大矩阵可以由已经建立好的小矩阵拼接而成。

>>a=[1,2,3;4,5,6;7,8,9];
>>b=[-1,-2,-3;-4,-5,-6;-7,-8,-9]
>>c=[a,b;b,a]
c =
1 2 3 -1 -2 -3
4 5 6 -4 -5 -6
7 8 9 -7 -8 -9
-1 -2 -3 1 2 3
-4 -5 -6 4 5 6
-7 -8 -9 7 8 9

  1. 通过下标来引用的矩阵元素

>>a=[1,2,3;4,5,6];
>>a(4,5)=10
a =
1 2 3 0 0
4 5 6 0 0
0 0 0 0 0
0 0 0 0 10
注:若给出的行下标或列下标大于原来矩阵的行数和列数,则MATLAB将自动扩展原来的矩阵,并将扩展后没有赋值的矩阵元素置为0。

  1. 利用冒号表达式获得子矩阵
    a(i,:) 第i行的全部元素
    a(:,j) 第j列的全部元素
    a(i:i+m,k:k+m) 第ii+m行内且在第kk+m列中的所有元素
    a(i:i+m,:) 第i~i+m行的全部元素

  2. end运算符:表示某一维的末尾元素下标。

>>a=[1,2,3,4,5;6,7,8,9,10;11,12,13,14,15;16,17,18,19,20];
>>a(end,:)
ans =
16 17 18 19 20
>>a([1,4],3:end)
ans =
3 4 5
18 19 20

  1. 利用空矩阵删除矩阵的元素

>>a=[1,2,3,4,5;6,7,8,9,10;11,12,13,14,15;16,17,18,19,20];
>>a(:,[2,4])=[]
a =
1 3 5
6 8 10
11 13 15
16 18 20

  1. 改变矩阵的形状
    reshape(a,m,n) 在矩阵总元素保持不变的前提下,将矩阵A重新排成m*n的二维矩阵。
    注:reshape函数只是改变原矩阵的行数和列数,但并不改变原矩阵元素个数及其存储顺序。

>>x=[23,45,65,34,65,34,98,45,78,65,43,76];
>>y=reshape(x,3,4)
y =
23 34 98 65
45 65 45 43
65 34 78 76
;a(😃 将矩阵a的每一列元素堆叠起来,成为一个列向量。
>>a=[-45,65,71;27,35,91]
a =
-45 65 71
27 35 91
>>b=a(😃
b =
-45
27
65
35
71
91
;a(:)等价于reshape(a,6,1)。

  1. 水仙花数是指各位数字的立方之和等于该数本身的三位正整数。求全部水仙花数。

>>m=100:999;
>>m1=rem(m,10);
>>m2=rem(fix(m/10),10);
>>m3=fix(m/100);
>>k=find(m==m1.*m1.*m1+m2.*m2.*m2+m3.*m3.*m3)
k =
54 271 272 308
>>s=m(k)
s =
153 370 371 407

  1. 字符串的表示

>>eg='I '‘am a student.’
eg =
I 'am a student.
>>eg(1:5)
ans =
I 'am

  1. 建立一个字符串向量,然后对该向量做如下处理:
    ① 取第1~5个字符组成的子字符串。
    ② 将字符串倒过来重新排列。
    ③ 将字符串中的小写字母变成相应的大写字母,其余字符不变。
    ④ 统计字符串中小写字母的个数。

>>ch=‘ABc123d4e56Fg9’
>>m1=ch(1:5) ;提取
m1 =
ABc12
>>m2=ch(end👎1) ;倒序
m2 =
9gF65e4d321cBA
>>k=find(ch>=‘a’&ch<=‘z’) ;找到小写字母下标
k =
3 7 9 13
>>ch(k)=ch(k)-(‘a’-‘A’) ;小写转大写
ch =
ABC123D4E56FG9
>>length(k)
ans =
4

  1. 字符串的执行
    格式:eval(s); s为字符串

>>t=pi;
>>m=’[t,sin(t),cos(t)]’;
>>y=eval(m)
y =
3.1416 0.0000 -1.0000

  1. 字符串与数值之间的转换
    abs和double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵。
    char函数可以把ASCII码矩阵转换为字符串矩阵。

>>a=‘what?’;
>> b=abs(a)
b =
119 104 97 116 63
>> char(b-32)
ans =
WHAT

  1. 字符串的查找与替换
    findstr(s1,s2) 返回短字符串在长字符串中开始的位置。
    strrep(s1,s2,s3) 将字符串s1中的所有子字符串s2替换为字符串s3。

>> p=findstr(‘This is a test!’,‘is’)
p =
3 6
>> p=findstr(‘is’,‘This is a test!’)
p =
3 6
>> result=strrep(‘This is a test!’,‘test’,‘book’)
result =
This is a book!

参考:MOOC《科学计算与MATLAB语言》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值