matlab入门学习(二)矩阵、字符串、基本语句、函数

一、矩阵

1、矩阵生成

Matlab 复制代码
%矩阵生成

%直接法
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、矩阵运算

Matlab 复制代码
%矩阵运算

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、矩阵修改

Matlab 复制代码
%矩阵修改

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矩阵元素列优先存储)

二、字符串

Matlab 复制代码
%字符串

str1='Hello,world' %单引号:传统字符数组(char[])
disp(class(str1))
str2="Hello,world" %双引号:字符串(string)
disp(class(str2))

%拼接
result1=['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

Matlab 复制代码
a=100
if a>0
    disp('正数')
elseif a==0
    disp(0)
else
    disp('负数')
end

2、switch

Matlab 复制代码
a=1
switch a
    case 1
        disp('选择1')
    case 2
        disp('选择2')
    otherwise
        disp('选择其它,相当于default')
end

3、for和while

Matlab 复制代码
for i=1:2:10
    i
end

a=10;
while a>0
    a
    a=a-2;
end

%continue:跳进下一循环,break:结束循环

4、try-catch

Matlab 复制代码
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)

四、函数

Matlab 复制代码
function [s,c]=circ(r)
    s=pi*r*r;
    c=2*pi*r;
end

%调用
[a,b]=circ(3)

带子函数版本:

Matlab 复制代码
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

匿名函数:

Matlab 复制代码
%匿名函数: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])
相关推荐
吱吱鼠叔2 小时前
MATLAB数据文件读写:2.矩阵数据读取
数据库·matlab·矩阵
kuan_li_lyg5 小时前
MATLAB - 机械臂手眼标定(眼在手内) - 估计安装在机器人上的移动相机的姿态
开发语言·人工智能·matlab·机器人·ros·机械臂·手眼标定
感谢地心引力5 小时前
【MATLAB2024b】安装离线帮助文档(windows)
windows·matlab
通信仿真实验室8 小时前
(4)MATLAB生成CRC校验码
开发语言·数据结构·matlab
月白风清江有声8 小时前
关于KKT条件的线性约束下非线性问题-MATLAB
开发语言·算法·matlab
柠檬少少开发8 小时前
基于MATLAB的安全帽检测系统
matlab
科研工作站8 小时前
MATLAB|电气互联系统有功-无功协同优化模型
matlab·综合能源·电气·有功·无功·电气互联
kuan_li_lyg9 小时前
MATLAB - 机械臂手眼标定(眼在手外) - 估算固定相机相对于机器人基座的姿态
开发语言·人工智能·matlab·机器人·ros·机械臂·手眼标定
WW、forever11 小时前
MATLAB工具库:数据统计分析工具MvCAT、MhAST等
开发语言·matlab