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])
相关推荐
远望清一色3 分钟前
基于MATLAB的实现垃圾分类Matlab源码
开发语言·matlab
顶呱呱程序5 小时前
2-143 基于matlab-GUI的脉冲响应不变法实现音频滤波功能
算法·matlab·音视频·matlab-gui·音频滤波·脉冲响应不变法
简简单单做算法8 小时前
基于Retinex算法的图像去雾matlab仿真
算法·matlab·图像去雾·retinex
其实吧318 小时前
基于Matlab的图像融合研究设计
人工智能·计算机视觉·matlab
Matlab程序猿小助手1 天前
【MATLAB源码-第208期】基于matlab的改进A*算法和传统A*算法对比仿真;改进点:1.无斜穿障碍物顶点2.删除中间多余节点,减少转折。
开发语言·嵌入式硬件·算法·matlab·机器人
IT猿手1 天前
基于卷积神经网络(CNN)的时间序列预测,15个输入1个输出,可以更改数据集,MATLAB代码
人工智能·深度学习·神经网络·算法·matlab·cnn
其实吧31 天前
基于MATLAB的运动车辆跟踪检测系统
开发语言·matlab
梦里水乡8572 天前
基于MATLAB的农业病虫害识别研究
开发语言·matlab
墨痕_7772 天前
论文阅读笔记Dense Passage Retrieval for Open-Domain Question Answering
matlab
真的是我22 天前
基于MATLAB课程设计-图像处理完整版
图像处理·人工智能·计算机视觉·matlab