Matlab矩阵和数组的操作

news2024/11/24 18:26:48

一、矩阵的建立

1、直接输入法

将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。

A = [16 3 2 13; 5 10 11 8; …
9 6 7 12; 4 15 14 1]
A =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1

2、利用M文件建立矩阵

对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。
例: 利用M文件建立A矩阵。
(1)启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵.
(2)把输入的内容存盘(设文件名为mymatrix.m)。
(3)运行该M文件,就会自动建立一个名为A的矩阵,可供以后使用。

(一) 利用MATLAB程序编辑器:
(1) MATLAB程序编辑器中输入:
A = [ …
16.0 3.0 2.0 13.0
5.0 10.0 11.0 8.0
9.0 6.0 7.0 12.0
4.0 15.0 14.0 1.0 ]
(2) 存为: mymatrix.m
(3) 运行: mymatrix
(二) 利用其它文本编辑器: (文本或二进制格式)
(1) 编辑一个文本文件:
16.0 3.0 2.0 13.0
5.0 10.0 11.0 8.0
9.0 6.0 7.0 12.0
4.0 15.0 14.0 1.0

(2) 装入 该文本文件:
load mymatrix.dat 或者:
load mymatrix.txt

(3) 创建一个变量名为mymatrix的矩阵
将以文本或二进制格式存储的数据读入 MATLAB 的另一种方式是用 Import Wizard.
File→Import Data

3、利用矩阵编辑器Matrix Editor完成输入和修改

先在命令窗口输入:
>>A=1
在Workspace窗口,双击该变量,打开矩阵编辑器,进行输入和修改。

4、利用MATLAB函数建立矩阵

几个产生特殊矩阵的函数:zeros、ones、 eye、rand、randn。
这几个函数的调用格式相似,下面以产生零矩阵的zeros函数为例进行说明。其调用格式是:
zeros(m) 产生m×m零矩阵
zeros(m,n) 产生m×n零矩阵。
zeros(size(A)) 产生与矩阵A同样大小的零矩阵
相关的函数有:length(A)给出行数和列数中的较大者,即length(A)=max(size(A));ndims(A)给出A的维数, size(A)多维矩阵各维长度
在这里插入图片描述

此外,常用的函数还有reshape(A,m,n),它在矩阵总元素保持不变的前提下,将矩阵A重新排成m×n的二维矩阵,其元素是以列的方式从A中获得, A必须包含m×n个元素。
在这里插入图片描述

5、建立大矩阵

大矩阵可由方括号中的小矩阵建立起来。
例如:

A=[1 2 3 ; 4 5 6 ; 7 8 9];
C=[A, eye(size(A)); ones(size(A)), A]
C = 1 2 3 1 0 0
4 5 6 0 1 0
7 8 9 0 0 1
1 1 1 1 2 3
1 1 1 4 5 6
1 1 1 7 8 9

6、冒号表达式

冒号表达式的一般格式:e1:e2:e3
还可以用linspace函数产生一个线性间隔的行向量:linspace(a,b,n):a,b,n:初值,终值,点数
linspace(a,b,n)与 a:(b-a)/(n-1):b 等价。
linspace用于产生一个等差数列,括号里三项分别表示起始值、终止值和元素数目;
logspace用于产生一个对数间隔行向量(等比数列),b=logspace(0,4,5), 表示产生一个起始值为100, 终止值为104, 元素数目为5的等比数列.
在这里插入图片描述

二、矩阵的保存和调用

save mydata A X load mydata
系统自动沿设定好的路径以”.mat”格式存储文件
savefile = ‘mydata.mat’;
save(savefile, ‘A’, ‘X’)
Load(savefile)
如果想存储在指定路径:
save D:\homework\mydata A X 或者:
savefile = ‘D:\homework\mydata.mat’;

三、矩阵的拆分

1. 矩阵元素

MATLAB允许用户对一个矩阵的单个元素进行赋值和操作。例如
A(3,2)=200

也可以采用矩阵元素的序号来引用矩阵元素。矩阵元素按列编号,先第一列,再第二列,依次类推。

以 m×n 矩阵A为例,矩阵元素 A(i, j) 的序号为:
(j-1)*m+i。其相互转换关系也可利用sub2ind和ind2sub函数求得(分别为:把矩阵下标变为元素序号和把元素序号变为矩阵下标)。
在这里插入图片描述

2. 矩阵拆分和结构变换

(1)利用冒号表达式获得子矩阵
①A(:, j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第j列的元素。
②A(i:i+m,:)表示取A矩阵第i~i+m行的全部元素;A(:,k:k+m)表示取A矩阵第k~k+m列的全部元素,A(i:i+m,k:k+m)表示取A矩阵第i~i+m行内,并在第k~k+m列中的所有元素。

(2)利用空矩阵删除矩阵的元素
在MATLAB中,定义[]为空矩阵。给变量X赋空矩阵的语句为X=[ ]。
注意: X=[ ]与clear X不同,clear是将X从工作空间中删除,而空矩阵则存在于工作空间,只是维数为0。
将某些元素从矩阵中删除,采用将其置为空矩阵的方法就是一种有效的方法。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3) 矩阵的结构变换

tril(A) %主对角线及以下元素取矩阵A的元素,其余为0
tril(A,K)%相对第K对角线及以下元素……
triu(A) %主对角线及以上元素取矩阵A的元素,其余为0
triu(A,K)%
rot90(A) %逆时针旋转90度
rot90(A,K)
L=flipud(A) %将矩阵A上下翻转
fliplr(A) %将矩阵A左右翻转
reshape(A,m,n)

Practice: A=magic(4)
B1=rot90(A), B2=rot90(A,2), B3=tril(A,2),
B4=triu(A,-1), BT=A’,

四、多维矩阵

以三维矩阵为例,常用的方法有4种
(1) 对二维矩阵进行扩充得到三维矩阵:
在这里插入图片描述
(2) 若干个同样大小的二维矩阵进行组合得到三维矩阵:

在这里插入图片描述
(3)除产生单位矩阵的eye函数外,前面介绍的建立矩阵的函数都可以延伸到三维矩阵:
在这里插入图片描述
(4)用cat函数构建多维矩阵。
cat(dim,A1,A2,…)
cat函数把大小相同的若干矩阵A1,A2,…,按照dim指定的维数组合成新的矩阵

A1=[1 2;3 4], A2=[5 6;7 8]
C1=cat(1,A1,A2)
C2=cat(2,A1,A2)
C3=cat(3,A1,A2)

五、矩阵的运算

(一)算术运算

  1. 基本算术运算
    MATLAB的基本算术运算有:+(加)、-(减)、*(乘)、/(右除)、(左除)、^(乘方)。
    注意:运算是在矩阵意义下进行的,单个数据的算术运算只是一种特例。
  2. 点运算
    点运算符有.*、./、.\和.^。两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维数相同。
    3.MATLAB常用数学函数
    (1)矩阵加、减(+,-)运算
     相加、减的两矩阵必须有相同的行和列,两矩阵对应元素相加减。
     允许参与运算的两矩阵之一是标量。标量与矩阵的所有元素分别进行加减操作。
    (2)矩阵乘()运算
     A矩阵的列数必须等于B矩阵的行数
    标量可与任何矩阵相乘。
    (3)矩阵除( \ , / )运算
    矩阵除的运算在线性代数中没有,有矩阵逆的运算,在matlab中有两种矩阵除运算:
     (左除): A\B表示A左除B ;
     /(右除): A/B表示B右除A
    设A是可逆矩阵的运算, AX=B的解是A左除B,即X= A\B; XA=B的解是A右除B,即X=B /A

A=[1 2;3 4;5 6];
B=[5 6;7 8;9 10];
C=A\B
D=A/ B
E= B \ A
F= B / A

对于AX=b的线性方程组,有两种解法:一种是利用矩阵求逆,即X=inv(A)*b; 另一种是用左除,即X= A\ b 。除法的速度快。

A=rand(5)
b=ones(5,1)
x1=inv(A)*b
x2=A\b

(4)矩阵乘方(^ )运算

A ^p —— A 自乘p 次幂
设A为方阵, p为正整数,则A ^p 表示 A 自乘p 次;
若A为方阵且非奇异, p为正整数, A ^(-p)表示 A的逆自乘p 次。
对于p的其它值,计算将涉及特征值和特征向量,如A , p 都是矩阵, A ^ p 则无意义。

A=[1, 2, 3;2, 3, 1;3, 2,1]
B=A^2
C=A^0.3

(5). 矩阵的其它运算
inv —— 矩阵求逆
det —— 行列式的值
eig —— 矩阵的特征值
diag —— 对角矩阵
’ —— 矩阵转置
sqrt —— 矩阵开方

D=[72 134 3.2; …
81 201 3.5; …
69 156 7.1; …
82 148 2.4; …
75 170 1.2]
mu = mean(D), sigma = std(D)
mu =
75.8000 161.8000 3.4800
sigma =
5.6303 25.4990 2.2107

(6)点运算(,./,.\)

a=[1 2 3;4 5 6;7 8 9]
b=[2 4 6;1 3 5;7 9 10]
a.b
ans =
2 8 18
4 15 30
49 72 90
a
b
对比一下上面两式得到的结果。
a.\b=b./a %给出a,b对应元素间的商.
%都是a的元素被b的对应元素除

a=[1 2 3],b=[4 5 6]
c1=a.\b
c2=b./a

c1 = 4.0000 2.5000 2.0000
c2 = 4.0000 2.5000 2.0000

.^ 元素对元素的幂

a=[1 2 3], b=[4 5 6]
z=a.^2
z =
1.00 4.00 9.00
z=a.^b
z =
1.00 32.00 729.00

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(二)关系运算
MATLAB提供了6种关系运算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(等于)、~=(不等于)。

关系运算符的运算法则。
在这里插入图片描述
例: 产生5阶随机方阵A,其元素为[10,90]区间的随机整数,然后判断A的元素是否能被3整除。

(1) 生成5阶随机方阵A
A=fix((90-10+1)*rand(5)+10)

(2) 判断A的元素是否可以被3整除
P=rem(A,3)==0
(三)逻辑运算
MATLAB提供了4种逻辑运算符:&(与)、|(或)、~(非)、xor(异或)。
运算法则。
>>a=1:5

b=2:6
c=(a>2)&(b<5)

x=linspace(0,10,100); %产生数据
y=sin(x); %产生sin函数
z=(y>=0).y ; %将sin (x)的负值设为0
z=z+0.5
(y<0);
z=(x<8).*z %将大于x=8以后的值设为0
plot(x,z);
xlabel(‘x)),ylabel(‘z=f(x)’)
title(‘A discontinuous signal’)

(四)关系和逻辑函数
y=all(x) %当x为数组时,只有x中所有元素都不等于0时,y为1,否则为0; x为矩阵时,则命令只作用于列元素,即对同列元素进行判断。
y=any(x)

a=[1 2 0 4; …
2 0 1 3]
b=all(a)
c=any(a)
b =
1 0 0 1
c =
1 1 1 1

exist(‘a’) %变量或函数是否被定义
ans =
1
exist(‘e’)
ans =
0
isempty(a) %参数是否为空
ans =
0
isstr(‘hello’) %参数是否为一字符串
ans =
1
isequal(a,b) %判断数组或矩阵是否相等
ans =
0
y=‘Hello’ , z=‘hello’
strcmp(y,z) %判断字符串是否相等
ans =
0
b=[4 5 6]
isprime(b) %元素是否为素数
ans =
0 1 0

六、字符与字符串

字符串是用单撇号括起来的字符序列。例如, ‘Northen Jiaotong University’。若字符串中的字符含有单撇号,则该单撇号字符应用两个单撇号来表示。 S= ‘I’‘m Lucy’
字符串中每个字符(空格也是字符),对应矩阵的一个元素。 size(S)
字符串是以ASCII码形式存储的。用abs和double命令可以看到字符所对应的ASCII码值。 abs(S)
setstr和char命令可以把ASCII码矩阵转换为字符串矩阵。
在这里插入图片描述
在这里插入图片描述
与字符串有关的另一个重要函数是eval,其调用格式为:eval(t)
其中t为字符串。它的作用是把字符串的内容作为对应的MATLAB语句来执行。例如
t=pi;
m=‘[t,sin(t),cos(t)]’;
y=eval(m)

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

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

相关文章

如何有效的增加 shopee 的流量?

很多卖家选择在跨境电商平台开店。说到跨境电商&#xff0c;大家首先想到的应该是亚马逊、易趣等电商平台&#xff0c;边肖会在shopee平台上给大家带来店铺。新店如何获得流量&#xff1f;有哪些方式&#xff1f;米贸搜为你整理如下&#xff1a;shopee店铺如何获取流量&#xf…

Python学习笔记——函数

函数是组织好的&#xff0c;可重复使用的&#xff0c;用来实现单一&#xff0c;或相关联功能的代码段。能提高应用的模块性&#xff0c;和代码的重复利用率。定义函数定义函数使用关键字def&#xff0c;后接函数名&#xff0c;再后接放在圆括号&#xff08;&#xff09;中的可选…

P1036 [NOIP2002 普及组] 选数————C++

题目 [NOIP2002 普及组] 选数 题目描述 已知 nnn 个整数 x1,x2,⋯,xnx_1,x_2,\cdots,x_nx1​,x2​,⋯,xn​&#xff0c;以及 111 个整数 kkk&#xff08;k<nk<nk<n&#xff09;。从 nnn 个整数中任选 kkk 个整数相加&#xff0c;可分别得到一系列的和。例如当 n4n4…

支持ITIL的IT帮助台

什么是ITIL 信息技术基础架构库 &#xff08;ITIL&#xff09; 是一套集成的最佳实践&#xff0c;旨在帮助企业向客户提供 IT 服务。ITIL是由中央设计的广泛采用的框架 计算机和电信局&#xff08;CCTA&#xff09;&#xff0c;英国的政府机构;它目前由AXELOS Ltd拥有。 ITIL…

【微信小程序】实用教程03-自定义底部导航(含自定义tabBar导航高亮需点击两次的解决方案)

开始前&#xff0c;请先完成底部导航的开发&#xff0c;详见 【微信小程序】实用教程01-注册登录账号&#xff0c;获取 AppID、下载安装开发工具、创建项目、上传体验 显然&#xff0c;纯文字的底部导航有点low&#xff0c;还是需要有图标的才酷&#xff0c;下面我们一起来实…

python的numpy的用法总结

本文总结Numpy的用法&#xff0c;建议先学习python的container 基础。numpy可以理解列表或数组。一个numpy数组是一个由不同数值组成的网格。网格中的数据都是同一种数据类型&#xff0c;可以通过非负整型数的元组来访问。维度的数量被称为数组的阶&#xff0c;数组的大小是一个…

五个了解自己天赋优势的分析工具(五)PDP性格测试

PDP性格测试 PDP的全称是Professional Dyna-Metric Programs⾏为特质动态衡量系统&#xff0c;它是⼀个⽤来衡量个⼈的⾏为特质、活⼒、动能、压⼒、精⼒及能量变动情况的系统。 PDP根据⼈的天⽣特质&#xff0c;将⼈群分为五种类型&#xff0c;包括&#xff1a;⽀配型、外向型…

项目部署 koa项目 (后端)

当你用node koa写好项目后&#xff0c;把它部署到服务器上使用 首先&#xff0c;你要买台服务器&#xff0c;链接到你的服务器上&#xff08;我前面部署前端项目有写&#xff0c;你可以参考&#xff09; 安装node 因为我们是node项目&#xff0c;所以先安装node dnf instal…

学习记录662@项目管理之项目整体管理

什么是项目整体管理 整体管理就是要决定在什么时间把工作量分配到相应的资源上&#xff0c;有哪些潜在的问题并在其出现问题之前积极处理&#xff0c;以及协调各项工作使项目整体上取得一个好的结果。项目整体管理包括选择资源分配方案、平衡相互竞争的目标和方案&#xff0c;…

LiveGBS流媒体平台GB/T28181功能-支持GB35114接入海康大华华为设备通过GB35114国标流媒体平台

LiveGBS流媒体平台GB/T28181功能-支持GB35114接入国标流媒体平台接入说明1、LiveNVR通过GB35114接入LiveGBS1.1、开启LiveGBS 35114功能1.2、 获取设备端证书给平台1.3、LiveGBS白名单中添加需要接入的国密设备1.4、导出LiveGBS平台端证书给设备&#xff08;双向认证需要&#…

嵌入式Linux-进程中常用的函数调用

1. execve()函数 系统调用 execve()可以将新程序加载到某一进程的内存空间&#xff0c;通过调用 execve()函数将一个外部的可执行文件加载到进程的内存空间运行&#xff0c;使用新的程序替换旧的程序&#xff0c;而进程的栈、数据、以及堆数据会被新程序的相应部件所替换&…

W13Scan 漏洞扫描器之XSS插件模块编写示例

一、背景 上周将W13Scan目录结构整理了一番&#xff0c;觉得要深入研究还得从代码层&#xff0c;于是尝试编写一下插件&#xff1b;框架本身已经集成了XSS扫描插件&#xff1b; 本篇文章的XSS插件的编写单纯是为了学习这个框架&#xff0c;所以只支持GET型&#xff0c;了解插…

一文解析企业网盘 带你寻找数据协作的“满分答案”

数据量急剧增长&#xff0c;线上办公逐渐成为常态。许多企业都会选择部署企业网盘来满足日益增长的数据管理与数据协作的需求。网盘市场乱花渐欲迷人眼&#xff0c;企业又该如何从中甄别最适合自己的企业网盘&#xff1f; 网盘&#xff0c;企业的数字基建 飞速发展的科技让企业…

[GIT] GIT拆分仓库--不丢git提交历史记录

背景 如果你的代码仓库里有多个目录&#xff0c;你想把其中一个目录拆分出去变成一个独立的代码仓库。重要的一点是拆分的过程中要保留git提交历史记录。 拆分步骤 1. 检查一下你的 repo 的根目录中。 进入根目录后&#xff0c;快速运行 ls 终端命令以确保列出所有子目录。…

ruoyi-vue版本框架(二)源码目录结构的讲解,与底层子项目的讲解

目录1 目录介绍2 ruoyi-common 子项目3 ruoyi-system 子项目4 配置文件5 ruoyi-framework6 数据库表7 druid 监控1 目录介绍 下载下来源码&#xff0c;后端一共有6个模块 其中 rouyi-admin这个子项目是整个若依框架的web项目&#xff0c;也就是我们要启动的后台就是这个子项目…

Django 第五章RESTFramework(DRF)框架初探以及认识serializers序列化器的增删改查

定义 Django REST framework (简称 DRF) 是一个强大灵活的wb api工具 功能完善&#xff0c;可快速开发api平台 官网地址 https://www.django-rest-framework.org/安装要求 pip3 install django3.2 pip3 install djangorestframework1.0 使用drf实现用户的增删改查 1.创建ap…

influxdb问题: unable to create database ‘mydb‘ 与 failed to send metrics to influx

[influx-metrics-publisher] ERROR i.m.i.InfluxMeterRegistry - [createDatabaseIfNecessary,117] - unable to create database mydb&#xff1b; [influx-metrics-publisher] ERROR i.m.i.InfluxMeterRegistry - [publish,161] - failed to send metrics to influx现象解决方…

Spring REST风格

REST&#xff08;Representational State Transfer&#xff09;&#xff0c;表现形式状态转换,它是一种软件架构风格。 当我们想要表示一个网络资源时&#xff0c;传统方式通常是用一个请求url表示一个操作。这样既不方便&#xff0c;也不安全&#xff0c;因为操作对于用户是透…

精要速览 | PacBio三代全长扩增子测序的多方向研究应用进展

随着测序技术的不断发展&#xff0c;组学研究愈加深入。在微生态研究领域&#xff0c;受限于二代测序读长的扩增子测序技术&#xff0c;迎来了“解放式”全面发展优化的三代测序时代——PacBio全长扩增子测序的优势逐渐显现&#xff1a;凭借其超长读长&#xff0c;高准确率&…

独立产品灵感周刊 DecoHack #044 - 新的一年如何管理你的时间

本周刊记录有趣好玩的独立产品设计开发相关内容&#xff0c;每周发布&#xff0c;往期内容同样精彩&#xff0c;感兴趣的伙伴可以点击订阅我的周刊。为保证每期都能收到&#xff0c;建议邮件订阅。欢迎通过 Twitter 私信推荐或投稿。本周看到了很多时间管理的工具类型产品&…