matlab入门学习(二)矩阵、字符串、基本语句、函数
一、矩阵
1、矩阵生成
%矩阵生成
%直接法
A=[1,2,3; 4,5,6; 7,8,9]
%冒号一维矩阵:开始,步长,结束(步长为1时可以省略)
B=1:1:10
B=1:10
%函数法
%linspace(开始,结束,元素个数),等差生成指定元素数的一维矩阵,省略个数则默认100个
C=linspace(0,10,5)
%diag(行向量或列向量,上移量):生成对角矩阵
diagA=diag(diag_a,0)
%特殊矩阵
e=eye(4) %eye(维数):单位阵
z=zeros(1,4) %zeros(维数):全零阵
o=ones(4,1) %one(维数):全1阵
r=rand(4,3) %rand(维数):0-1分布随机阵
rn=randn(4,1) %randn(维数):以0为均值的正态分布随机阵
2、矩阵运算
%矩阵运算
a=[1,2,3;4,5,6;7,8,9]
%获取行或列
[row_a,col_a]=size(a)
%行列中最大的
len_a=length(a)
%读取矩阵
diag_a=diag(a,1) %diag(矩阵,主对角线上方第k条斜线):读取矩阵的对角线
tril_a=tril(a,1) %tril(矩阵,主对角线上方第k条斜线):读取矩阵的下三角阵
triu_a=triu(a,1) % triu:读取矩阵的上三角阵(tri:三角阵 low:下 up:上)
%矩阵相乘
a*a
%矩阵对应元素->点运算
%a.*b , a./b , a.^b(b次方)
%逆矩阵:A*x=B,则x=pinv(A)*B
pinv(a)
%特征值,特征向量
[v,D]=eig(a) %v:特征向量,D:特征值对角矩阵
%行列式
det(a)
%秩
rank(a)
%伴随矩阵:compan(向量)
compan([1,2,3])
3、矩阵修改
%矩阵修改
a=[1,2,3;4,5,6;7,8,9]
%替换
chg_a=a %先备份
chg_a(2,3)=4 %(行,列)=替换的元素
chg_a(1,:)=[2,2,2] %(行,: )替换行
chg_a(:,1)=[] %( : ,列)替换列,为[]删除该列
%转置
T_a=a'
%拼接
c1_a=cat(1,a,a) %1表示列,在列上拼接(垂直)
c2_a=cat(2,a,a) %2表示行,在行上拼接(水平)
%变维
rs_a=reshape(a,1,9) %reshape:重新塑形,元素个数不变,矩阵变为m*n(matlab矩阵元素列优先存储)
二、字符串
%字符串
str1='Hello,world' %单引号:传统字符数组(char[])
disp(class(str1))
str2="Hello,world" %双引号:字符串(string)
disp(class(str2))
%拼接
result=['a','b','c'] %用[ ]拼接字符数组,逗号或空格隔开
result2="a"+"b"+"c" %用+拼接字符串
%删除首尾空格
strtrim(' abc ')
%截取第一个分隔符(空格,tab,回车)前的部分
strtok('123 456')
%比较
strcmp(str1,str2) %相等为1,不等为0
strncmp(str1,str2,3) %比较前3个是否相等(n)
strcmpi(str1,str2) %忽略大小写比较(i)
strncmpi(str1,str2,3) %忽略大小写,比较前3个是否相等
%转换
upper(str1) %转大写,lower转小写
num2str(123)
str2num('123') %dec2hex都可以
abs_str=abs('aBc') %逐字符取ASCII码,double('aBc')也可以
str3=char([97,66,99]) %把ASCII转字符串
三、基本语句
1、if
a=100
if a>0
disp('正数')
elseif a==0
disp(0)
else
disp('负数')
end
2、switch
a=1
switch a
case 1
disp('选择1')
case 2
disp('选择2')
otherwise
disp('选择其它,相当于default')
end
3、for和while
for i=1:2:10
i
end
a=10;
while a>0
a
a=a-2;
end
%continue:跳进下一循环,break:结束循环
4、try-catch
a=[1,2,3;4,5,6;7,8,9]
b=[1,2]
try %首先尝试执行try代码
c=a*b;
catch %若中途捕捉到错误,则执行catch代码
c="Error";
end %最后无论如何都要执行的end后的代码
disp(c)
四、函数
function [s,c]=circ(r)
s=pi*r*r;
c=2*pi*r;
end
%调用
[a,b]=circ(3)
带子函数版本:
function [s,c]=circ(r)
s=calc_s(r);
c=calc_c(r);
end
function s=calc_s(r) %直接在函数文件里定义、调用子函数(子函数必须位于下方)
s=pi*r*r;
end
function c=calc_c(r)
c=2*pi*r;
end
匿名函数:
%匿名函数:f = @(inputs) expression;
%inputs:输入
%expression:返回值
circ=@(r) [pi*r*r;2*pi*r]; %一个输入,多个输出(用向量返回,但是注意接收时也要用且仅用一个向量名,相当于是输出一个)
result=circ(3)
result(1)
result(2)
add=@(x,y) x+y; %多个输入(直接输入多个变量),一个输出
add(2,3)
add=@(vars) vars(1)+vars(2); %多个输入(输入向量,注意调用时也要用[ ]),一个输出
add([3,4])