matlab入门基础:矩阵操作(一)

2023-11-16

系列笔记目录

第二节:矩阵操作(一):创建特殊矩阵、矩阵的运算



前言

MATLAB即Matrix Laboratory(矩阵实验室)的缩写,足以证明MATLAB在对矩阵问题进行处理的强大,我们这篇文章主要讲解如何创建特殊矩阵,如何对矩阵进行运算。


一、创建特殊矩阵

函数 作用
eye(n) 创建n*n单位矩阵
eye(m,n) 创建m*n的单位矩阵
eye(size(A)) 创建与A维数相同的单位矩阵
ones(n) 创建n*n的全1矩阵
ones(m,n) 创建m*n全1矩阵
ones(size(A)) 创建与A维数相同的全1矩阵
zeros(m,n) 创建m*n全0矩阵
zeros(size(A)) 创建与A维数相同的全0矩阵
rand(n) 在[0,1]区间内创建一个n*n均匀分布的随机矩阵
rand(m,n) 在[0,1]区间内创建一个m*n均匀分布的随机矩阵
rand(size(A)) 在[0,1]区间内创建一个与A维数相同的均匀分布的随机矩阵
compan (K) 创建系数向量是K的多项式的伴随矩阵
diag(v) 创建以向量v中的元素为对角的对角阵
hilb(n) 创建n*n的Hilbert矩阵
magie(n) 生成n阶魔方矩阵
sparse(A) 将矩阵A转化为稀疏矩阵形式,即由A的非零元素和下标构成稀疏矩阵S。若A本身为稀疏矩阵,则返回A本身。

实例:生成特殊矩阵

>> zeros(3)%创建3阶全0矩阵

ans =

       0              0              0       
       0              0              0       
       0              0              0       

>> zeros(3,2)%创建32列的全0矩阵

ans =

       0              0       
       0              0       
       0              0       

>> ones(3,2)%创建32列的全1矩阵

ans =

       1              1       
       1              1       
       1              1       

>> ones(3)%创建3阶全1矩阵

ans =

       1              1              1       
       1              1              1       
       1              1              1       

>> rand(3)%创建3*3的随机数矩阵,元素值在区间(01)内均匀分布

ans =

     664/815        717/785        408/1465  
    1298/1433      1493/2361      1324/2421  
     751/5914       694/7115       338/353   

>> format long,rand(3)%15位表示

ans =

   0.964888535199277   0.957166948242946   0.141886338627215
   0.157613081677548   0.485375648722841   0.421761282626275
   0.970592781760616   0.800280468888800   0.915735525189067

>> format short,rand(3,2)%5位表示,创建3*2的随机矩阵

ans =

    0.7922    0.0357
    0.9595    0.8491
    0.6557    0.9340

>> magic(3)%创建3阶魔方矩阵

ans =

     8     1     6
     3     5     7
     4     9     2

>> hilb(3)%创建3阶Hilbert矩阵

ans =

    1.0000    0.5000    0.3333
    0.5000    0.3333    0.2500
    0.3333    0.2500    0.2000

>> invhilb(3)%创建3阶Hilbert矩阵的逆矩阵

ans =

     9   -36    30
   -36   192  -180
    30  -180   180

二、矩阵运算

1.矩阵元素的修改

命令名 说明
D=[A;B C] A为原矩阵,B、C中包含要扩充的元素,D为扩充后的矩阵
A(m,:)=[ ] 删除A的第m行
A(:,n)=[ ] 删除A的第n列
A(m,n)=a; 对A的第m行第n列的元素赋值;
A(m,:)=[a b …]; 对A的第m行赋值;
A(:,n)=[a b …] 对A的第n列赋值

实例:新矩阵的生成、修改矩阵元素

>> A=[1 2 3;4 5 6];
>> B=eye(2);%定义2*2的单位矩阵B
>> C=zeros(2,1);%定义2*1的全0矩阵C
>> D=[A;B C]%扩充矩阵

D =

     1     2     3
     4     5     6
     1     0     0
     0     1     0
>> D(2,:)

ans =

     4     5     6

>> D(1,2)=9

D =

     1     9     3
     4     5     6
     1     0     0
     0     1     0

2.矩阵的变维

矩阵的变维可以用符号“:”法和reshape()函数法。
函数调用方式:reshape(X,m,n):将已知矩阵X变维成m行n列的矩阵。

实例:矩阵维度改变

> A=1:12;%定义一个行向量
>> B=reshape(A,2,6)%将行向量A变维26列

B =

     1     3     5     7     9    11
     2     4     6     8    10    12
>> C=zeros(3,4);%用“:”必须先设定修改后矩阵的形状
>> C(:)=A(:)

C =

     1     4     7    10
     2     5     8    11
     3     6     9    12

3.矩阵的变向

命令名 说明
rot90(A) 将A逆时针方向旋转90°
rot90(A,k) k可为正整数或负整数
fliplr(X) 将X左右翻转
flipud(X) 将X上下翻转
flipdim(X,dim) dim=1时对行翻转,dim=2时队列翻转

实例:矩阵的变向

>> A=1:12;
>> C=zeros(3,4);%指定修改后矩阵的维度大小
>> C(:)=A(:)%将矩阵A变维为34列

C =

     1     4     7    10
     2     5     8    11
     3     6     9    12

>> flipdim(C,1)%上下翻转矩阵C的行

ans =

     3     6     9    12
     2     5     8    11
     1     4     7    10

>> flipdim(C,2)%左右翻转矩阵C的列

ans =

    10     7     4     1
    11     8     5     2
    12     9     6     3

4. 矩阵的抽取

对矩阵元素的抽取主要是指对角元素和上(下)三角阵的抽取。

命令名 说明
diag(X,k) 抽取矩阵X的第k条对角线上的元素向量。k为0时,抽取主对角线线,k为正整数时抽取上方第k条对角线上的元素,k为负整数时抽取下方第k条对角线上的元素
diag(X) 抽取主对角线
diag(v,k) 使得v为所得矩阵第k条对角线上的元素向量
diag(v) 使得v为所得矩阵主对角线上的元素向量
tril(X) 提取矩阵X的主下三角部分
tril(X,k) 提取矩阵X的第k条对角线下面的部分(包括第k条对角线)
triu(X) 提取矩阵X的主上三角部分
triumph(X,k) 提取矩阵X的第k条对角线上面的部分(包括第k条对角线)

实例:矩阵的抽取操作

>> A=magic(4)%创建4阶魔方矩阵

A =

    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

>> V=diag(A,2)%抽取矩阵A第2条对角线上的元素

V =

     3
     8

>> tril(A,-1)%抽取矩阵A主对角线下方的元素

ans =

     0     0     0     0
     5     0     0     0
     9     7     0     0
     4    14    15     0

>> triu(A)%提取矩阵A的上三角部分

ans =

    16     2     3    13
     0    11    10     8
     0     0     6    12
     0     0     0     1

练习

:创建一个新的矩阵

>> A=[5 1 1 9;1 3 8 1;1 1 3 1;1 1 1 3]%创建一个旧的矩阵A

A =

     5     1     1     9
     1     3     8     1
     1     1     3     1
     1     1     1     3
>> A(:,1)=[]%删除矩阵多余的列元素

A =

     1     1     9
     3     8     1
     1     3     1
     1     1     3
>> A(2,2)=1

A =

     1     1     9
     3     1     1
     1     3     1
     1     1     3

>> A(4,3)=-1

A =

     1     1     9
     3     1     1
     1     3     1
     1     1    -1

三、矩阵的数学运算

这个没什么好讲的,直接加减乘除就行了,唯一一个需要注意的就是:
在MATLAB中,矩阵的幂运算需要加‘.’才可以。

>> A.^2

ans =

     1     1    81
     9     1     1
     1     9     1
     1     1     1

求矩阵的逆用函数 inv(X);要求是矩阵必须是方阵才可以。

总结

用MATLAB对矩阵问题进行求解和应用真的非常强大。还有矩阵更新和范数,我打算单独写一篇小文章,进行讲解。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

matlab入门基础:矩阵操作(一) 的相关文章

  • 笛卡尔散点图上的极坐标网格线

    我有一个脚本来创建散点图 使用gscatter 基于另一个脚本生成的 x y 数据 离散数据点 不连续 由于这些数据点实际上是圆形空间中某些对象的位置 因此添加极坐标网格线将使绘图更有意义 有谁知道如何在笛卡尔散点图上显示极坐标网格线 或者
  • 在 Matlab、VB6 和 VB.NET 程序之间发送消息的最简单方法

    我们正在将一套数据采集和分析例程从 VB6 程序升级为 VB NET VB6 和 Matlab 程序的混合体 我们希望保持系统模块化 单独的 EXE 以便我们可以轻松创建专门的独立分析程序 而无需不断升级大型应用程序 当所有程序都是用 VB
  • 如何从 Matlab 在 vi​​rtualenv 中执行 Python 代码

    我正在创建一个用于研究的 Matlab 工具箱 我需要执行 Matlab 代码 但也需要执行 Python 代码 我想允许用户从 Matlab 执行 Python 代码 问题是 如果我立即执行此操作 我将必须在 Python 环境中安装所有
  • 朴素分类器 matlab

    在 matlab 中测试朴素分类器时 即使我在相同的样本数据上进行训练和测试 我也会得到不同的结果 我想知道我的代码是否正确 是否有人可以帮助解释这是为什么 dimensionality reduction columns 6 U S V
  • MATLAB 图像锐化 - 使用(1-高斯低通滤波器)的高斯高通滤波器

    我试图通过设计高斯高通滤波器来锐化图像 我想利用高通滤波器相当于单位矩阵减去低通滤波器的事实来做到这一点 所以我执行了以下操作 image imread Question3 Data Cats jpg read image H 1 fspe
  • 如何在 MATLAB 中创建带有分级标记颜色的散点图?

    我想在 MATLAB 中绘制一个简单的散点图 标记颜色从光谱的一端到另一端各不相同 例如红色 橙色 黄色 蓝色 紫色 我的数据比较了一段时间内河流的水量和水质 3 个简单的列 时间 水量 质量 我想绘制数量与质量的 x y 散点图 但颜色随
  • 如何打开 matlab p 代码文件

    有谁知道如何查看 matlab p 代码文件的代码 p 代码文件专门存在 以便您可以共享代码 以便其他人无法查看它 换句话说 您看不到 Matlab p 代码文件的代码
  • 在 Matlab 2014b 中移动等高线图的 z 值

    我正在尝试绘制曲面图 在曲面下方我希望显示轮廓线 但我希望轮廓位于z 1而不是默认值0 我找到了之前关于这个问题的帖子here https stackoverflow com questions 8054966 matlab how to
  • MATLAB 是否已有 YAML 库/解析器?

    我想使用 YAML 跨多种语言交流一些数据 将其视为 与语言无关的序列化 其中一种语言是 MATLAB 但我似乎找不到该语言的 YAML 库 我在 Google 上检查了 matlab yaml 和 matlab yaml parse 似乎
  • 如何将Matlab代码库与Android集成?

    我有一个算法和 MATLAB 中的一些其他代码 我想在我的 Android 应用程序中使用它 我怎样才能做到这一点 我可以从 MATLAB 制作 jar 文件以便与 Android 一起使用吗 我必须做点别的事吗 如果您还有其他产品 适用于
  • Matlab 的快速 JSON 解析器

    您知道 Matlab 中有一个非常快速的 JSON 解析器吗 目前我正在使用JSONlab http www mathworks com matlabcentral fileexchange 33381 jsonlab a toolbox
  • 在 Matlab 中对列进行排序

    我有 2 列使用 textscan 导入的数据 数据看起来像这样 其中U is undetect and D is detect mydata 51 U 57 D 48 U 47 D my data 4x1 double 4x1 char
  • 如何在 R 或 MATLAB 中为散点图创建阴影误差条“框”

    我想在 R 或 MATLAB 中创建一个简单的散点图 涉及两个变量 x 和 y 它们有与之相关的错误 epsilon x 和 epsilon y 然而 我不是添加误差线 而是希望在每个 x y 对周围创建一个 阴影框 其中框的高度范围从 y
  • Microsoft Visual C++ 2008 和 R2007b 的 Mex 类型

    我想对 vs2008 和 matlab2007b 使用 mex 类型 我尝试了下面的代码 include
  • 白色像素簇提取

    我正在研究指纹毛孔提取项目 并陷入毛孔 白色像素簇 提取的最后阶段 我有两个输出图像 我们可以从中获取毛孔 但不知道该怎么做 这两个图像的尺寸不同 image1 的尺寸为 240 320 image2 的尺寸为 230 310 这是我的图像
  • 将组合字符串和数字输入的元胞数组写入文本文件

    考虑以下 DateTime 2007 01 01 00 00 2007 02 01 00 00 2007 03 01 00 00 Headers Datetime Data Dat 100 200 300 Data DateTime num
  • 如何以编程方式指定 MATLAB 编辑器键绑定

    我想将键盘键绑定设置为Windows 默认设置我想在启动时使用startup m因为我希望在大量系统上设置此设置 首选项对话框中的等效设置是 MATLAB gt Keyboard gt Shortcuts gt Active Setting
  • 在 MATLAB 中用两个值替换向量值

    我必须创建一个以向量作为输入的函数v和三个标量a b and c 该函数替换了的每个元素v等于a有一个二元素数组 b c 例如 给定v 1 2 3 4 and a 2 b 5 c 5 输出将是 out 1 5 5 3 4 我的第一次尝试是尝
  • 在 Matlab 中快速加载大块二进制文件

    我有一些相当大的 int16 格式的数据文件 256 个通道 大约 75 1 亿个样本 每个文件约 40 50 GB 左右 它以平面二进制格式编写 因此结构类似于 CH1S1 CH2S1 CH3S1 CH256S1 CH1S2 CH2S2
  • 为什么matlab的mldivide比dgels好这么多?

    Solve Ax b 真正的双 A是超定的 Mx2 其中 M gt gt 2 b是MX1 我运行了大量的数据mldivide 并且结果非常好 我用 MKL 写了一个 mex 例程LAPACKE dgels但它远没有那么好 结果有大量噪音 并

随机推荐

  • Node快速切换版本、版本回退(降级)、版本更新(升级)

    场景 最近遇到一些node的坑 比如6 3 0版的node用不了公司最新的工作流 升级到10 x版的node后 又用不了另一套工作流 问题 怎么实现node版本降级 升级 是否可以安装多个版本按需要进行切换 解决方案 1 安装node版本管
  • 【FPGA项目】进阶版沙盘演练——报文收发(报文处理、CDC、CRC)

    前言 书接上文 FPGA项目 沙盘演练 基础版报文收发 子墨祭的博客 CSDN博客 前面我们做了基础版的报文收发 相信对逻辑设计有了一定的认知 在此基础上 继续完善一个实际报文收发可能会遇到的一些处理 报文处理 握手与反压 跨时钟域处理CD
  • 金币(代码)

    今天 先更一道题的代码 目录 题目描述 输入输出格式 输入格式 输出格式 样例 输入输出样例 1 输入 输出 输入输出样例 2 输入 输出 数据范围与提示 AC 代码 题目描述 国王将金币作为工资 发放给忠诚的骑士 第一天 骑士收到一枚金币
  • 什么是软连接,以及软连接在linux系统中的用法

    软连接是linux中一个常用命令 它的功能是为某一个文件在另外一个位置建立一个同步的链接 软连接类似与c语言中的指针 传递的是文件的地址 更形象一些 软连接类似于WINDOWS系统中的快捷方式 例如 在a文件夹下存在一个文件hello 如果
  • 微信小程序反编译微信小程序

    微信小程序反编译跳一跳 项目地址 https github com shunyue1320 decompile wx 反编译 wxapkg 文件 微信开发者工具打开
  • 【python】详解threading模块:Event类的使用

    测试代码 import threading import time event threading Event event set def func 1 print t1线程开启等待状态 event wait print t1线程并没有处于
  • 计算机网络-应用层

    1 概述 定义 为应用进程的通信提供服务 主要功能 文件传输 访问和管理 电子邮件 虚拟终端 查询服务和远程作业登录 重要协议 FTP SMTP POP3 HTTP DNS 应用层的两种模型 客户服务器模型 C S P2P模型 Peer t
  • 为什么使用Lambda表达式

    视频地址 https b23 tv gfH0PjR 在使用Lambda表达式之前 先看一下 匿名内部类的一个使用 匿名内部类详情 http t csdn cn nMZpB 匿名内部类 就是没有名字的一种嵌套类 它是Java对类的定义方式之一
  • java倒叙遍历list

    for int i list size 1 i gt 0 i System out println list get i
  • MIDI 音乐程序设计 (可以自己编曲的快乐)

    乐器数字接口 MIDI 简介 乐器数字接口 Musical Instrument Digital Interface MIDI 是20世纪80年代初为解决电声乐器之间的通信问题而提出的 是电子乐器制造商们建立的通信标准 是电子乐器之间以及电
  • linux网站重启命令res,linux

    服务进程 实时观察cpu 进程 内存 top q键退出 load average 0 05 0 11 0 08 1分钟 5分钟 15分钟 平均负载 Cpu s 0 7 us 1 4 sy 0 0 ni 97 8 id 0 0 wa 0 0
  • unity 之 Particle 内置粒子系统二

    Emission module 这个模块影响发射速率和发射的时间 Properties Property Function Rate over Time 单位时间内发射的粒子数 Rate over Distance 每移动一单位距离所发射的
  • SpringBoot八种bean的加载方式

    目录 第一种bean的加载方式 配置文件 第二种加载bean方式 注解和扫描 创建第三方的bean对象 第三种加载bean方式 不使用配置文件 扩展 bean的加载方式扩展FactoryBean lt gt 扩展 ImportResourc
  • 华为云服务器,新用户福利!!0元免费体验云产品最长可达一年

    华为云官网最新活动 新用户完成个人实名认证 参与问卷调研后即可免费试用 云产品0元试用 最长可达一年 华为云服务立足于互联网领域 依托于华为公司雄厚的资本和强大的云计算研发实力 面向互联网增值服务运营商 大中小型企业 政府 科研院所等广大企
  • global::System.Runtime.Versioning.TargetFrameworkAttribute 特性重复问题处理

    今天编译程序遇到global System Runtime Versioning TargetFrameworkAttribute 特性重复错误 原因是编译时生成的 NETFramework Version v4 6 1 AssemblyA
  • 记一次MySql还原导致的无法连接

    问题 昨天同事使用服务器的MySql数据库还原了一个5GB 的备份 结果一直卡住 他就将数据库强行关闭 没再执行任何其他操作 结果今天客户反馈登录异常 逐步排查 定位到是数据库无法访问 于是远程查看服务器 发现 MySql服务是正在运行的
  • RTKlib软件源码学习(观测文件与星历文件读取)

    本文基于本人对rtklib源码的学习进行顺序汇总 为记录个人的学习与理解 并根据个人需要对部分代码对其进行注释 如有错误或者不完善的地方烦请提出建议或改正方法 目录 1 execses函数 2 readobsnav函数 3 readrnxt
  • 【JS逆向】之HOOK代码怎么写

    声明 本文只作学习研究 禁止用于非法用途 否则后果自负 如有侵权 请告知删除 谢谢 前言 我解释一下hook是什么玩意 hook的原意是钩子 我理解替换或者拦截原有方法去修改和处理 1 怎么去替换原来的方法 这里我自己写一个方法去替换 实例
  • 中关村归国留学人员联创中心揭牌仪式,Jina AI 受邀出席活动

    2022 年 9 月 25 日上午 中关村归国留学人员联创中心揭牌仪式在中关村创业大街顺利举行 Jina AI 联合创始人兼 COO 何烜彬现场进行企业项目分享 并面向现场各海外高校校友代表发出人才招募邀请 活动背景 为更好地服务国际化人才
  • matlab入门基础:矩阵操作(一)

    系列笔记目录 第二节 矩阵操作 一 创建特殊矩阵 矩阵的运算 文章目录 系列笔记目录 前言 一 创建特殊矩阵 二 矩阵运算 1 矩阵元素的修改 2 矩阵的变维 3 矩阵的变向 4 矩阵的抽取 练习 三 矩阵的数学运算 总结 前言 MATLA