MATLAB基础知识笔记——(矩阵的运算)

%clear ;清空工作区

%clc ;清空命令行窗口

% 鼠标右键选中三行再ctrl + R,那么就是都注释掉了

x = 30;

y = 5;

t = x + y

% ctrl + t 将所写的注释都给取消掉

% Matlab中变量名的基本运用

% MATLAB的命名规则如下

% >>变量名必须以字母开头,之后是任意的字母,数字或者下划线

% >>变量名区分字母的大小写,例如a和A代表不同的变量

% >>变量名不超过63个字符,第63个字符以后的字符将被忽略

% >>不能定义与MATLAB关键词同名的变量(例如if或者end),要获取关键字的完整列表,请在命令行输入iskeyword并运行

% >>特殊变量:ans、pi、inf/-inf等

%

% MATLAB使用等号"="给变量赋值

% MATLAB不需要对变量提前进行声明的

% 对于在编辑器的页面当中选择是否加上分号

% 可以将结果是否显示到命令行窗口当中

%加上";"就是不显示的意思,但是运算结果会存储到默认变量当中

%不加";"就是显示的意思

% 字符和字符串

%

% >>字符用''引起来的

% >>字符串用""引起来的

% 基本的运算符的使用

%

% 针对数值,字符或者逻辑值

% >>加法:+

% >>减法:-

% >>乘法:*

% >>除法:/

% >>乘方:^

%

% 矩阵运算和逻辑运算

%

% 本章小结:

% matlab变量名的规范,MATLAB中预定义的特殊变量

% MATLAB常用变量类型,数值,字符和字符串以及矩阵

%<<对两个字符变量做基本运算>>

%字符和字符串

clear ;%清空工作区

clc ;

ch1 = 'a';

ch2 = 'b';

str = "hello matlab";

%基本运算符

x6 = 35;

X6 = 30;

x6 - X6;

ch1 + ch2;%运算的就是a和b对应的ASCII值

%MATLAB就是matrix(矩阵)和lab(实验)的组合

%>>关于矩阵的创建

% >>矩阵元素元素的修改删除

% >>矩阵的拼接重构和重排

% >>矩阵的运算

% >>本章小结

% >>课后小练

% >>矩阵的创建

% 1.在MATLAB当中是,矩阵的创建方法主要有三种,分别是:直接输入法、函数创建法和导入本地文件中的数据。

% ①直接输入法

% ②函数创建法

% ③导入本地文件中的数据

%

% >>直接输入法

% 适用于矩阵当中数量较少的情况

%

% 输入矩阵时要以中括号[]为标识符号,矩阵的所有元素必须都在中括号当中,矩阵的同行元素

% 之间用空格或者逗号分离,行与行之间用分号或者回车键分离;

%矩阵基础

clear;

clc;

%>>直接输入法

a = [1 2 3;4 5 6];

%>>函数创建法

b = zeros(100);%表示的是100*100的随机方阵

a = zeros(100,99);%表示的100*99的随机矩阵

%>>rand(),randn(),randi();

%rand(n),rand(m,n)

e = rand(5);%生成一个5x5的随机数矩阵,矩阵中的数据在0~1之间标准正态分布随机数

c = rand(5,6);%生成一个5x6的随机数矩阵,矩阵中的数据在0~1之间

%randi([imin,imax],x);

d = randi([1,6],20);%表示20行和列的方阵,其中的元素的值为1~6的整数,i表示的就是整数

%randn(n),randn(m,n)

f = randn(5);%表示的是5x5随机数矩阵,数值是随机正态分布的函数,不是0~1之间的

g = randn(5,6);%表示的就是5x6随机数矩阵,数值就是随机正态分布的函数,也不是在0~1之间

%>>导入本地文件中的数据

% MATLAB可读取本地的文件,支持的常见格式

% >>txt、.dat或者.csv(适用于带有分隔符的文本文件)

% >>xls、.xlsb、.xlsm、.xlsx、.xltm、.xltx、.ods(适用于电子表格文件)

%

% 步骤如下:

% 1.在Excel表格当中创建表格

% 2.在MATLAB当中的主页当中点击导入数据

% 3.点击data.excel文件(MATLAB当中的会比Excel中的数据少一行的)

% 4.备注:是可以选择矩阵中数据的导入范围的

% 5.MATLAB一般默认第一行不是数值的,其实在Excel中第一行也不是数值

%%矩阵元素的修改和删除

clear;

clc;

A = [1 2 3 4;2:5;3:6] %生成了一个3行4列的矩阵,第一行是1 2 3 4;第二行是2 3 4 5;第三行是3 4 5 6;

A(1,3) = 10;%这里就是将第一行第3列的数字改成了10

A(1,:) = 10;%将第一行的数都变成了10

A %在命令行当中输出A矩阵

A([1,2],[1,3]) = 6; %将第一行第二列和第一行第3列的数字改为6

A %在命令行当中输出A矩阵

A(3) = 0; %按列进行排列,第三个数字改为0,第六个数字改为0;(线性索引)

A(6) = 0;

A(5,6) = 888 %这里就是将5行列的元素改为888,而且MATLAB将矩阵A给我进行了自动扩展

%原来是三行四列的矩阵改为了五行六列的矩阵,从而对满足用户的要求

% 矩阵元素的删除和修改

%

% 矩阵元素的删除:

%

% >>如果我们将等号的右侧变成空间向量[];则可以删除对应位置的元素。需要注意的是

% 通常只能通过删除矩阵的整行或者整列,否则会进行报错

%

% >>也可以通过线性引索来删除的元素。使用线性索引删除后,MATLAB会将矩阵中剩下的元素按照线性索引的顺序

% 放入到一个向量当中,另外,使用线性索引可以删除矩阵的一整行或者一整列

A(:,1) = [] %这里就是将第一列的数字进行删除,这种方法只能将一整行或者一整列的数字进行删除

A(1,:) = [] %将第一行的数字进行删除,这种方法只能将一整行或者一整列的数字进行删除

% >>关于矩阵的拼接重构和重排

%

% 矩阵的拼接:

%

% 横向拼接:A和B的行数相同,那么使用[A,B]、[A B]以及cat(2,A,B)都能将A和B横向拼接成一个大的矩阵

%

% 纵向拼接:A和B的列数相同,那么使用[A;B]以及cat(1,A,B)都能将A和B纵向拼接成一个巨大的矩阵

clear;

clc;

A = [1 2 3 4;2:5;3:6];

B = ones(3,2);

C = [A,B] ;%A和B的矩阵的行数相同,所以可以将A和B按照行进行拼接

C2 = [A B];%A和B的矩阵的行数相同,所以可以将A和B按照行数进行拼接

C3 = cat(2,A,B); %2代表的是水平串联,1代表的是垂直串联

B2 = ones(2,4);

D2 = [7:10;11:14;15:18];

C4 = cat(1,A,B2); %A和B2的矩阵列数相同,所以将A和B2的按照列进行拼接

C5 = [A;B2]; %和C4的效果一样的

C6 = [D2;A;B2];%将D2、A、B2三个矩阵进行拼接

C7 = cat(1,D2,A,B2);%C6和C7的效果是一样的

% 矩阵的重排和重构

% >>reshape函数:更改矩阵的形状,reshape(A,m,n)或者reshape(A,[m,n])

%

% >>sort函数:对向量或者进行排序,sort(A,dim),在最后面加一个输入参数'descend',变成

% 从大到小的降序排列

% ~dim = 1时,沿着行的方向(从上到下)对矩阵的每一列升序排列

% ~dim = 2时,沿着列的方向(从左到右)对矩阵的每一行升序排列

%

% sortrows函数:基于矩阵的某一列对矩阵进行排序,同一行的元素不会改变。

% sortows(score,列),在最后面加上一个输入参数'descend',变成从大到小的降序排列

clear;

clc;

A = randi(10,2,6) %生成一个1~10的随机数,矩阵的大小的是一个2行6列

E = reshape(A,[3,4]) %将2x6的A矩阵修改成一个3x4的E矩阵

%这里不能改为3x5的矩阵,因为元素的数量不能够进行更改

%注意:A和E的关系就是将A矩阵中的数一列一列取出再放入E矩阵当中

% 如果不知道是几行或者几列,那么可以在'[]'设置空号,这样的话MATLAB就可以自动的进行排列

%

% 例如

clear;

clc;

A = randi(20,5,6);

B = reshape(A,3,[]) %这里就是我想转三行,至于列是多少MATLAB自己算吧

clear;

clc;

C = randi(20,5,6)

D = sort(C,1) ;% 1代表的就是按照行对每一列进行升序排列

E = sort(C,2) ;% 2代表的就是按照列队每一行进行升序排列

G = sort(C,1,'descend');% 后面加了一个descend就是对其进行降序排列

H = sort(C,2,'descend');% 后面加了一个descend就是对其进行降序排列

% 矩阵的运算

%

% 矩阵基础

% 调用函数

% 善用帮助文档

% sum 求和函数

% prod 求乘机函数(product)

% cumsum 计算累积和(cumlative sum)

% diff 计算差分(difference)

% mean 计算平均值

% median 计算中位数

% mode 计算众数

% var 计算方差

% std 计算标准差

% min 求最小值

% max 求最大值

clear;

clc;

A = randi(10,3,4);

A

sum(A,1); %这里就是将每一列进行加和 形成一个列向量

sum(A,2); %这里就是将每一行进行加和 形成一个行向量

sum(sum(A)); %将矩阵当中的所有元素进行加和,得到一个数字

%上一行的写法不是很美观,那么改进一下代码

sum(A(:)); %将矩阵当中的所有元素进行加和,得到一个数字,这里的冒号就是索引的意思

%冒号索引得到一个向量

sum(A,"all"); %将矩阵当中的所有元素进行加和,得到一个数字

prod(A(:)); %冒号进行索引,得到一个向量,再进行相乘

prod(A,"all"); %将矩阵中的所有元素进行相乘,得到其乘积

prod(prod(A)); %将矩阵中的所有元素进行相乘,得到其乘积

% 矩阵的加减运算

% >>在线性代数当中,只有两个大小完全相同的矩阵才能进行加减运算

% >>但是在MATLAB当中,只要两个矩阵的大小兼容就可以进行加减运算

% (五种算术运算的兼容模式、按对应位置进行加减乘除运算,知道五种矩阵加减的模式情况)

%

%

%

% 矩阵的乘除和乘方

% >> *和.*分别表示线代中的矩阵相乘和两个矩阵中对应的元素相乘

% >> /(右除)、\(左除)、和./

% >> ^和.^

%

% 矩阵的转置 '

%%算术运算

clear;

clc;

A = randi(10,3,4);

B = randi(10,4,4);

C = A*B %将A和B矩阵进行线性代数上的矩阵相乘

%D = A.*B % .*将两个矩阵上对应位置的梳子进行相乘,前提是这两个矩阵要满足MATLAB的五项兼容原则

%将A 和 B 两个矩阵进行修改,就可以进行对应位置上的点乘

clear;

clc;

D = randi(10,3,4);

E = randi(10,1,4);

G = D.*E %这里就是矩阵D和矩阵E进行点乘

%在线性代数里面,是不支持矩阵的除法运算,但是在MATLAB里面是支持矩阵的除法的

%关于在MATLAB中的点除:就只要满足5中兼容方式就可以了

F = D./E

%关于矩阵的乘方:就是只是用于方阵

clear;

clc;

A = randi(10,4,4)

B = randi(10,4,4)

E = A * A * A

C = A ^ 3 %对矩阵A进行3的乘方。就是将A进行连乘三次,C和E就是两个相同的矩阵

F = A .^ 3 %这里就是矩阵A中的每个元素进行三次乘方

%%关于矩阵的转置,对于一般的矩阵来说都是实数矩阵,所以 ' 和 .' 是同样的效果

clear;

clc;

A = randi(10,4,4)

B = randi(10,4,5)

C = A' %将A进行矩阵的转置

D = B' %将B进行矩阵的转置

%对于矩阵当中含有复数是矩阵的算法

A2 = [1 2 3+i;2 4 5+i]

A2' %当使用了'的时候MATLAB默认将复数变为共轭复数,因为A2中的1,2 ,2, 4 ,5 不是复数

%所以就默认他们不是复数,尽管显示出来了他们就是复数,但是我们不用管

A2.' % .' 这里就不会将矩阵中的复数变为共轭复数

%%关于矩阵的关系运算

% 关系运算

%

% == 等于

% ~= 不等于

% > 大于

% >= 大于等于

% < 小于

% <= 小于等于

%

% 关系运算符可以用来比较两个数组中的元素的关系,如果比较的结果为真,则MATLAB会返回逻辑值1;

% 如果结果为假,则返回逻辑值为0;

clear;

clc;

A = [1:4]; %生成矩阵A,A中的元素就是一行四列,其中的元素就是1到4的元素

B = ones(3,4); %生成了一个三行四列的单位矩阵

A

B

A == B %这里就是将A矩阵自动生成三行,然后矩阵A和矩阵B在进行比较,然后在再将逐个进行比较

%%关于矩阵的相关知识的补充

% j : k , 相当于向量[j,j+1.j+2,...,k]

%

% j : i : k , 相当于向量

%

% A(:,j) , 矩阵A的第j列

% A(i, : ), 矩阵A的第i行

% A(:,j:k), 表示的是A(:,j) 、A(:,j+1)、A(:,j+2)、....、A(:,K)

% A(:,:) 二维数组,相当于矩阵A

% A(:) 将A看成是一个列向量,表示A的所有元素

% 这里的i,j,k,必须为标量

%

% 在MATLAB当中,还可以使用linspace函数产生行向量,其调用格式为

% linspace(a,b,c)

% 其中a和b表示的向量的第一个元素和最后一个元素,n是元素的总数,当n省略时,自动产生100

% 个元素。显然,linspace(a,b,c) 与 a:(b-a)/(n-1):b 等价

clear;

clc;

a = linspace(1,10,10)

%此外,还可以在对数空降当中建立向量,采用函数logspace,其调用格式为:

%a = logspace(n1,n2,n3);

% 关于矩阵的建立:对于比较大且复杂的矩阵,可以为它专门建立一个M文件。

% 建立大的矩阵可由小矩阵或者向量建立起来

A = [1 2 3 4;4 5 6 7;7 8 9 10];

B = [A;eye(size(A));ones(size(A));A]

C = [A,eye(size(A));ones(size(A)),A]

%B和C表示的矩阵两种不同的拼接方式

%%关于矩阵的拆分

%采用矩阵元素的序号来引用矩阵元素,矩阵元素的序号就是相应元素在内存中的排列顺序。在MATLAB当中

%矩阵的元素按照列进行存储,先是第一列,在第二列,以此类推

A = [1 2 3;4 5 6;7 8 9]

A(3) = 100;

A

%利用冒号表达式获得子矩阵

% ①A(:,j)表示矩阵A的第j列的全部元素;A(i,:)表示矩阵A的第i行的全部元素;A(i,j)表示矩阵的第i行第j列的元素

% ②A(i:i+m,:)表示矩阵A的第i行到i+m行的全部元素;A(:,K:K+m)表示的是矩阵A从第K列到K+m列的所有元素

% ③A(i:i+m,j:j+k)表示矩阵A第i行到i+m行的全部元素以及第j列到第j+k列的全部元素

A(:)%将矩阵A的每一列元素堆叠起来,成为一个列向量,,这也是MATLAB的变量的存储方式

E = randi(10,9,9)

F = E([(end-2):1:end],[end-1,end])%这里就是截取矩阵E的最后三行和最后两列的矩阵元素

%%利用空矩阵删除矩阵中的元素

% 在MATLAB当中,定义[]为空矩阵,给变量X赋空矩阵的语句为X = [].注意,X = []和clear X不同,clear是将X从

% 工作空间当中删除,而[]则存在于工作空间当中,只是位数是0

% 关于矩阵的点运算,矩阵的点运算也称作数组运算,其运算符就是在算术运算符的前面加点。点运算符有 .* ./

% .\ .^。两个矩阵的点运算就是他们对应元素进行相关的运算,要求两个元素的位数相同。

clear;

clc;

a = [1 2;3 4];

b = [3 5;5 9];

c = a+b,d = a - b, e = a * b,f = a / b,g = a \ b,h = a^3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/15928.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【视觉SLAM】2-三维空间刚体运动的数学表示

读书笔记&#xff1a;学习空间变换的三种数学表达形式。 文章目录 1. 旋转矩阵1.1 向量运算1.2 坐标系空间变换1.3 变换矩阵与齐次坐标 2. 旋转向量和欧拉角2.1 旋转向量2.2 欧拉角 3. 四元数 1. 旋转矩阵 1.1 向量运算 对于三维空间中的两个向量 a , b ∈ R 3 a,b \in \R^3 …

研发费用资本化的意义

1.更真实地反映企业价值&#xff1a;研发费用是企业为创造未来经济利益而进行的投资&#xff0c;通过将其资本化并作为无形资产计入资产负债表&#xff0c;可以更真实地反映企业的资产总额和长期投资价值。这有助于投资者、债权人和其他利益相关者更准确地评估企业的财务状况、…

Ubuntu24.04安装Anaconda3+Pycharm

一、引言 重装系统已经过去一段时间了&#xff0c;现在安装一下 Anaconda 和 Pycharm。 参考连接&#xff1a; Ubuntu中安装Anaconda3和Pycharm 及其环境搭建Ubuntu18.04安装Pycharm教程ubuntu系统安装Anaconda及Pycharm在移动硬盘上搭建Ubuntu24.04深度学习环境&#xff08;…

稀疏矩阵(Sparse Matrix)及其存储格式详解

稀疏矩阵&#xff08;Sparse Matrix&#xff09;是线性代数和计算机科学中的一个重要概念&#xff0c;广泛应用于科学计算、工程模拟、图像处理、机器学习等多个领域。与稠密矩阵&#xff08;Dense Matrix&#xff09;相比&#xff0c;稀疏矩阵大部分元素为零&#xff0c;仅有少…

操作系统:页表中的页表项

操作系统&#xff1a;页表中的页表项 页表是操作系统用于跟踪进程使用的虚拟地址与系统内存中相应物理地址之间映射的数据结构。 页表项&#xff08;Page Table Entry&#xff0c;PTE&#xff09;是页表中的一个条目&#xff0c;用于存储有关特定内存页的信息。每个页表项包含…

Docker部署Kafka SASL_SSL认证,并集成到Spring Boot

1&#xff0c;创建证书和密钥 需要openssl环境&#xff0c;如果是Window下&#xff0c;下载openssl Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions 还需要keytool环境&#xff0c;此环境是在jdk环境下 本案例所使用的账号密码均为&#xff1a; ka…

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《基于改进容积卡尔曼滤波的含光伏配电网动态状态估计》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

jenkins使用cli发行uni-app到h5

官网文档HBuilderX 文档 首先确定是否存在环境变量 正常情况cmd中执行cli 如果提示 cli 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。请先配置环境变量 Freestyle Project项目在Build Steps中增加Execute Windows batch command命令如下 d: cd D:\devsof…

FMEA 在新兴技术领域(如量子计算、人工智能芯片等)的应用挑战与机遇

【大家好&#xff0c;我是唐Sun&#xff0c;唐Sun的唐&#xff0c;唐Sun的Sun。】 摘要&#xff1a; 本文深入探讨了 FMEA&#xff08;失效模式及后果分析&#xff09;在如量子计算、人工智能芯片等新兴技术领域的应用所面临的挑战与机遇。随着科技的飞速进步&#xff0c;新兴技…

websocket身份验证

websocket身份验证 前言 上一集我们就完成了websocket初始化的任务&#xff0c;那么我们完成这个内容之后就应该完成一个任务&#xff0c;当客户端与服务端连接成功之后&#xff0c;客户端应该主动发起一个身份认证的消息。 身份认证proto 我们看一眼proto文件的内容。 我…

Spire.PDF for .NET【页面设置】演示:复制 PDF 文档中的页面

在某些情况下&#xff0c;我们需要创建 PDF 文档中现有页面的副本&#xff0c;而不是复制整个文件&#xff0c;特别是如果我们必须创建某个页面的数百份副本&#xff0c;那么逐个复制页面可能会很繁琐。本文演示了如何使用 Spire.PDF 复制 PDF 文档中的页面并一次创建多个副本的…

Vue-组件三大组成组件通信

一、学习目标 1.组件的三大组成部分&#xff08;结构/样式/逻辑&#xff09; scoped解决样式冲突/data是一个函数 2.组件通信 组件通信语法 父传子 子传父 非父子通信&#xff08;扩展&#xff09; 3.综合案例&#xff1a;小黑记事本&#xff08;组件版&#xff09; 拆…

2024CVPR点云-1-点云分类CausalPC

文章摘要&#xff1a;深度神经网络在点云分类中表现出了显著的性能。然而&#xff0c;以前的工作表明它们容易受到对抗性扰动的影响&#xff0c;这些扰动可以操纵它们的预测。鉴于点云的独特模态&#xff0c;出现了各种攻击策略&#xff0c;这对现有的防御提出了挑战&#xff0…

ssm114基于SSM框架的网上拍卖系统的设计与实现+vue(论文+源码)_kaic

摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff0c;商品拍卖当然也不能排除在外&#xff0c;随着商品拍卖管理的不断成熟&#xff0c;它彻底改变了过去传统的经营管理方式&#xff0c;不仅使商品…

【Qt聊天室客户端】消息功能--发布程序

1. 获取文件内容 主要目标是实现获取内容二进制数据的接口&#xff0c;主要是为后面的消息功能提供服务 具体实现 客户端发送请求 服务端处理请求&#xff0c;同时支持三种数据类型 客户端处理服务端的响应 2. 发送图片消息 客户端与服务端的通信约定 客户端从服务器中获取图片…

【CSS】opacity 影响 z-index 不生效

准备知识 一般来说&#xff0c;z-index 不生效的原因有&#xff1a; 父元素的 position 属性&#xff1a; z-index 只对 position 属性为 relative、absolute 或 fixed 的元素有效。 其他元素的 z-index&#xff1a; 如果页面中有其他元素也设置了较高的 z-index&#xff0c;…

Elasticsearch基本概念及使用

Elasticsearch 是一个开源的、分布式的全文搜索和分析引擎&#xff0c;基于 Apache Lucene 构建。它提供了快速的搜索能力&#xff0c;支持大规模的数据分析&#xff0c;广泛应用于日志分析、全文搜索、监控系统和商业智能等领域。ES操作指令是基于restAPI构建&#xff0c;也就…

C语言入门到精通(第六版)——第十六章

16、网络套接字编程 16.1、计算机网络基础 计算机网络技术是计算机技术和通信技术相结合的产物&#xff0c;代表计算机的一个重要发展方向。了解计算机的网络结构&#xff0c;有助于用户开发网络应用程序。 16.1.1、IP地址 为了使网络上的计算机能够彼此识别对方&#xff0c;…

Electron教程1-初学入门

玩转Electron Electron 是什么注意事项环境安装安装 vscode安装 git 第一个实例第二个实例第二个实例解读 总结问题解答 Electron 是什么 Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个…

柠乐音乐 1.3.87 | 界面优美支持无损音乐下载的音乐播放器

柠乐音乐app提供丰富的音乐资源&#xff0c;涵盖流行、摇滚、古典等多种类型音乐&#xff0c;并且全部免费。支持FLAC无损音质音乐免费高速下载。内置独特推荐算法&#xff0c;可根据用户喜好智能推荐音乐。还包括电台播放资源、歌单同步&#xff08;支持网易云音乐和QQ音乐&am…