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])
相关推荐
今天吃饺子7 小时前
如何用MATLAB调用python实现深度学习?
开发语言·人工智能·python·深度学习·matlab
硬汉嵌入式10 小时前
专为 MATLAB 优化的 AI 助手MATLAB Copilot
人工智能·matlab·copilot
Dev7z16 小时前
基于Matlab遗传算法与蚁群算法的风光储并网微电网容量优化研究
算法·matlab·蚁群算法·多能源微电网
jllllyuz20 小时前
基于粒子群优化(PSO)的特征选择与支持向量机(SVM)分类
开发语言·算法·matlab
一只肥瘫瘫21 小时前
基于MATLAB的滑膜观测器仿真搭建
单片机·嵌入式硬件·matlab
bubiyoushang8882 天前
MATLAB 实现多能源系统(MES)多目标优化
支持向量机·matlab·能源
算法如诗2 天前
**MATLAB R2025a** 环境下,基于 **双向时间卷积网络(BITCN)+ 双向长短期记忆网络(BiLSTM)** 的多特征分类预测完整实现
开发语言·网络·matlab
bubiyoushang8882 天前
基于MATLAB的马尔科夫链蒙特卡洛(MCMC)模拟实现方法
人工智能·算法·matlab
轻微的风格艾丝凡2 天前
卷积的直观理解
人工智能·深度学习·神经网络·算法·计算机视觉·matlab·cnn