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])
相关推荐
studyer_domi8 小时前
matlab质子磁力仪传感器线圈参数绘图
人工智能·matlab
青橘MATLAB学习14 小时前
模糊综合评价法:原理、步骤与MATLAB实现
开发语言·算法·数学建模·matlab·分类
studyer_domi14 小时前
matlab 三维时频图绘制
开发语言·matlab
studyer_domi18 小时前
matlab飞行姿态pid控制
matlab
Matlab仿真实验室18 小时前
基于Matlab实现信道估计仿真(源码)
开发语言·matlab·信道估计仿真
studyer_domi20 小时前
matlab 汽车abs的pid控制仿真
开发语言·matlab·汽车
studyer_domi20 小时前
matlab 汽车abs的模糊pid和pid控制仿真
开发语言·matlab·汽车
freexyn1 天前
Matlab自学笔记四十七:如何把日期时间型数据作为横坐标进行绘图
开发语言·笔记·matlab
见你背影1 天前
matlab数据处理:创建网络数据
matlab
chinakq2 天前
C++学习计划(三周) 有matlab和python基础,如何快速入门C++(利用《C++ primer plus》)
c++·学习·matlab