MATLAB——矩阵操作

news/2024/11/6 12:31:41 标签: matlab, 矩阵, 开发语言

内容源于b站清风数学建模

数学建模清风老师《MATLAB教程新手入门篇》https://www.bilibili.com/video/BV1dN4y1Q7Kt/  

目录

1.MATLAB中的向量

1.1向量创建方法

1.2向量元素的引用

1.3向量元素修改和删除

2.MATLAB矩阵操作

2.1矩阵创建方法

2.2矩阵元素的引用

2.3矩阵元素修改和删除

2.4矩阵的拼接和重复

2.5reshape函数

2.6sort函数——对向量或矩阵进行排序

2.7sortrows

2.8flip/fliplr/flipud函数

2.9rot90

3.矩阵的运算

3.1调用函数

3.1.1sum求和函数

3.1.2prod乘积函数

3.1.3cumsum累计和函数

3.1.4diff差分

3.1.5median中位数

​编辑3.1.6mode计算众数

3.1.7var计算方差

3.1.8std计算标准差

3.1.9min

3.2算数运算

3.2.1加法

3.2.2减法

3.2.3乘法

3.2.4除法

3.2.5乘方

3.2.6逆矩阵

3.2.7转置

3.3关系运算

3.4逻辑运算

3.4.1运算优先级

3.4.2&&和||

3.4.3利用逻辑值引用矩阵元素

3.4.4all,any和find

3.5集合运算

3.5.1unique函数

3.5.2ismember函数

3.5.3intersect函数——交集、union、setdiff、setxor

3.6线性代数相关函数

3.6.1det行列式 rank秩 trace迹 rref最简型矩阵 inv逆矩阵 transpose转置矩阵

3.6.2triu上三角,tril下三角

练习题

3.6.3 eig计算特征值和特征向量

3.6.4 norm函数


1.MATLAB中的向量

1.1向量创建方法

1.直接输入法

2.冒号法

3.利用MATLAB函数输入

linspace等差数列

linspace(a,b):该命令用来创建一个行向量,向量中的第一个元素为a,最后一个元素为b,形成总数为100个元素的线性间隔的向量

linspace(a,b,n):该命令用来创建一个行向量,向量中的第一个元素为a,最后一个元素为b,形成总数为n个元素的线性间隔的向量

linspace和冒号法的区别:

1.linspace不需要指定步长,MATLAB会根据你给定的元素个数n自动计算出来;而使用冒号法可以自己指定步长

2.linspace生成的向量的最后一个元素一定是b,而使用冒号法a:step:b生成的向量最后一个元素不一定是b

3.循环语句用冒号法;绘制函数图形,linspace得到的x轴范围会更准确,因为linspace最后一个一定是2*pi,而0:0.1:2*pi最后一个元素不一定是2*pi

logspace等比数列

logspace(a,b):创建一个行向量,第一个元素为10^a,最后一个元素为10^b,形成总共50个元素的等比数列

logspace(a,b,n):创建一个行向量,第一个元素为10^a,最后一个元素为10^b,形成总共n个元素的等比数列

1.2向量元素的引用

计算向量元素个数:length/numel

单个元素引用   a(ind)  多个索引:将ind设置为向量

end索引

1.3向量元素修改和删除

a(1)=4  a(1)=[]

2.MATLAB矩阵操作

2.1矩阵创建方法

1.直接输入法

2.函数创建法 zeros、ones、eye、rand、randi、randn(阿楠matlab有)

diag创建对角矩阵或获取矩阵的对角元素(diagonal对角)

输入向量获取矩阵

输入矩阵则获取对角元素

blkdiag创建分块对角矩阵(block diagonal)

2.2矩阵元素的引用

a(row,column)

计算矩阵大小size

1.size(A) 例如A是3x4矩阵 size(A)返回[r,c]=3,4

2.size(A,dim)返回在维度dim上的长度。dim=1表示行,dim=2表示列

size(A,1)行数  size(A,2)列数

length用在矩阵返回行和列较大的值

numel会返回矩阵元素总数

线性索引

A(:) 将A中所有元素按线性索引顺序重构成一个列向量

sub2ind矩阵下标转换成线性索引

ind = sub2ind(sz,row,col)针对大小为sz的矩阵返回由row和col指定的行列下标的对应线性索引ind

ind2sub线性索引转换为下标

2.3矩阵元素修改和删除

删除只能删除整行或整列

用线性索引删除时,将剩余元素放入到一个向量中

2.4矩阵的拼接和重复

横向拼接[A,B]或者horzcat(A,B)

纵向拼接[A,B]或者vercat(A,B)

2.5reshape函数

按列优先规律重新组织矩阵元素

2.6sort函数——对向量或矩阵进行排序

2.6.1对向量进行排序

sort函数可以有两个返回值

[sort_v,ind]=sort(v)%sort_v是排序后的向量,ind是排序后的向量(即sort_v)中的每个元素在原向量(v)中的索引

v(ind)的结果==sort_v

2.6.2对矩阵排序

sort(A,dim)

(1)sort(A,1)==sort(A)

(2)'descend'降序排列

(3)可以返回两个值,加一个索引ind

2.7sortrows

score = [95 80 85 79;95 67 78 90;95 67 78 75;95 67 64 73;86 85 82 84;86 87 82 88]

sort_score1 = sortrows(score,1)%按第一行升序排列

sort_score = sortrows(score,[1,2,3,4])%第一科成绩相同,比第二科…

降序排列

sort_score = sortrows(score,[1,2,3,4],'descend')

降序加升序

2.8flip/fliplr/flipud函数

2.9rot90

3.矩阵的运算

3.1调用函数

3.1.1sum求和函数

3.1.2prod乘积函数

3.1.3cumsum累计和函数

3.1.4diff差分

3.6mean平均值

3.1.5median中位数

3.1.6mode计算众数

mode函数不能加omitnan

3.1.7var计算方差

可加omitnan

3.1.8std计算标准差

3.1.9min

自动忽略nan

3.2算数运算

3.2.1加法

3.2.2减法

3.2.3乘法

3.2.4除法

3.2.5乘方

3.2.6逆矩阵

A^(-1) or inv(A)

3.2.7转置

英文单引号'

3.3关系运算

3.4逻辑运算

nan和复数不能逻辑运算

logical函数 普通矩阵转换成逻辑矩阵

3.4.1运算优先级

3.4.2&&和||

3.4.3利用逻辑值引用矩阵元素

3.4.4all,any和find

find

3.5集合运算

3.5.1unique函数

矩阵

3.5.2ismember函数

加rows,每一行作为一个整体

3.5.3intersect函数——交集、union、setdiff、setxor

union

3.6线性代数相关函数

3.6.1det行列式 rank秩 trace迹 rref最简型矩阵 inv逆矩阵 transpose转置矩阵

3.6.2triu上三角,tril下三角

练习题

clc,clear all;
n = 4;
num = n*(n-1)/2;%上三角部分个数
A = zeros(n);
A(triu(true(n),1)) = randi([0,9],num,1);%全一上三角随机生成
A = A+A'+diag(randi([0,9],n,1))

3.6.3 eig计算特征值和特征向量

3.6.4 norm函数


http://www.niftyadmin.cn/n/5740880.html

相关文章

棱镜七彩参加“融易行”产融对接南京站项目路演活动 展示供应链安全创新成果

近日,江苏省软件强链“融易行”产融对接南京站活动圆满举行,棱镜七彩作为江苏省重点软件企业受邀参加活动,并展示了公司在供应链安全与开源治理方面的创新成就。 本次活动由江苏省工业和信息化厅、南京市工业和信息化局主办,关键软…

爬虫-------字体反爬

目录 一、了解什么是字体加密 二. 定位字体位置 三. python处理字体 1. 工具库 2. 字体读取 3. 处理字体 案例1:起点 案例2:字符偏移: 5请求数据 - 发现偏移量 5.4 多套字体替换 套用模板 版本1 版本2 四.项目实战 1. 采集目标 2. 逆向结果 一、了解什么是…

[libos源码学习 1] Liboc协程生产者消费者举例

文章目录 1. CoRoutineEnv_t结构体用于管理协程环境 3 Liboc协程生产者消费者例子4 Liboc协程生产者消费者, 为什么队列不需要上锁?5. 两个协程访问资源不需要加队列吗5. 参考 1. CoRoutineEnv_t结构体用于管理协程环境 struct stCoRoutineEnv_t { stCo…

更新!线下家政线上陪玩平台商业版2.0v源码搭建开启网络社交新时代

游戏开黑陪玩系统: 多客陪玩系统,游戏开黑陪玩,线下搭子,开黑陪玩系统 前端uniapp后端php,数据库MySQL 。陪玩系统的搭建和开发是一个涉及多个技术层面和步骤的复杂过程。以下是一个详细的概述,包括关键步骤和注意事项…

微服务设计模式 - 事件溯源模式(Event Sourcing Pattern)

微服务设计模式 - 事件溯源模式(Event Sourcing Pattern) 定义 事件溯源(Event Sourcing)是一种将所有状态更改保存为一系列事件的设计模式。每次系统状态发生变化时,都会生成一个事件,这些事件在事件存储…

Python详细实现龙格-库塔算法

目录 Python详细实现龙格-库塔算法引言一、龙格-库塔算法基本原理1.1 常微分方程初值问题1.2 龙格-库塔方法的基本思想1.3 龙格-库塔方法的具体形式 二、Python实现龙格-库塔算法2.1 基本实现代码解析: 2.2 高阶Runge-Kutta方法代码解析: 三、龙格-库塔算…

springboot约车APP-计算机设计毕业源码96773

基于Spring Boot的约车APP设计与实现 摘要 本文基于Spring Boot框架设计并实现了一款约车APP,旨在为用户提供便捷的出行服务。通过后端Spring Boot框架和前端交互界面的设计,实现了用户快速叫车、实时定位、路线规划等功能。系统结合了高效的后端处理和直…

Milvus - 混合搜索和重排策略详解

在AI驱动的搜索系统中,如何有效地结合多模态的向量数据是关键。Milvus 的 hybrid_search() API 提供了这种混合搜索的功能,支持通过多种重排策略来进一步优化搜索结果。这篇文章将详细介绍 Milvus 中重排的过程、其重要性以及如何实现不同的重排策略。 什…