题目描述

已知A为4*5的矩阵
12 3 4 7 8
5 6 9 11 13
2 1 15 20 21
10 6 11 8 9
完成如下操作:将A(2,4)的11和A(3, 2)的1删除后,保持数据次序不变的情况下,重新整理成3行6列的矩阵数据。

输入

输出

3行6列的矩阵

提示

使用 reshape()函数,sub2ind()函数以及“利用空矩阵删除矩阵元素”

程序代码

A=[12, 3, 4, 7, 8;5, 6, 9, 11, 13;2, 1, 15, 20, 21;10, 6, 11, 8, 9];B = A(sub2ind(size(A), [1 2 3 4, 1 2 4, 1 2 3 4, 1 3 4, 1 2 3 4], [1 1 1 1, 2 2 2, 3 3 3 3, 4 4 4, 5 5 5 5 ]));
C = reshape(B, 3, 6);
disp(num2str(C));
sub2ind()函数

将下标转换为线性索引

ind = sub2ind(sz,row,col)
  • 针对大小为 sz 的矩阵返回由 row 和 col 指定的行列下标的对应线性索引 ind。
  • 此处,sz 是包含两个元素的向量,其中 sz(1) 指定行数,sz(2) 指定列数。

首先创建了一个矩阵A,一个4行5列的矩阵,size(A)为获得A矩阵的行数和列数,sub2ind第二和第三个参数都是用矩阵表示的,两个矩阵对应的元素代表A中某个元素的行下标和列下标。


例如:要获取 A(2,4)的11和A(3, 2)的1的行下标和列下标。

  • A(2, 4):行下标为2,列下标为4的元素对应的是11,对应的索引序号为 14
  • A(3, 2):行下标为3,列下标为2的元素对应的是1,对应的索引序号为 7

注:

  • MATLAB是按列搜索的,先搜索第一列,然后搜索第二列…。同理A中的第2行第5个的索引号为18,后面依次类推。
  • 行下标,指定为标量、向量、矩阵或多维数组。row 的大小必须与 col 的大小相同。

如何取出A中A(2, 4),A(3, 2),输入以下代码即可:

B = A(sub2ind(size(A), [2 3], [4 2]));


如果要用 sub2ind()函数删除 A(2, 4),A(3, 2)即选取出A(2, 4),A(3, 2)以外的元素,那么输入以下代码即可:

B = A(sub2ind(size(A), [1 2 3 4, 1 2 4, 1 2 3 4, 1 3 4, 1 2 3 4], [1 1 1 1, 2 2 2, 3 3 3 3, 4 4 4, 5 5 5 5 ]));

reshape()函数

如果需要改变矩阵的形状,reshape(A,m,n)表示矩阵总元素保持不变的前提下,将矩阵A重新排列为m*n的矩阵。
reshape()函数只改变矩阵的行数和列数,但并不改变原矩阵元素个数及其存储顺序。

使用reshape()函数将B转换成 3行6列的矩阵

C = reshape(B, 3, 6);


参考:https://ww2.mathworks.cn/help/matlab/ref/sub2ind.html?searchHighlight=sub2ind&s_tid=doc_srchtitle

MATLAB reshape()函数和sub2ind()函数相关推荐

  1. Matlab中ind2sub和sub2ind函数

    MATLAB中ind2sub和sub2ind这对函数,是互逆的一对函数.ind2sub把数组或者矩阵的线性索引转化为相应的下标:sub2ind则正好相反,将下标转化为线性索引. ind2sub的函数参 ...

  2. matlab中find、sub2ind函数用法

    [i,j,v]=find(A); 解释:i是A中非零元素的行索引(按一列一列的看,第一个非零元素在第几行,看完第一列再看第二列,依次) j是A中非零元素的列索引 v是A中非零元素的值 b=sub2in ...

  3. matlab中sub2ind函数

    刚刚开始学习matlab函数学到sub2ind函数 A=[17 24 1 8;2 22 7 14;4 6 13 20] A = 17    24     1     8      2    22    ...

  4. MATLAB笔记1:sub2ind;ind2sub;删除矩阵某行或者某列元素;改变矩阵的形状reshape函数

    重点 MATLAB中的矩阵元素按列存储,其序号即是矩阵元素再内存中的排列顺序.例如: >> A=[1,2;3,4]A =1 23 4>> A(2)ans =3 sub2ind函 ...

  5. 【笔记】:Python实现Matlab中sub2ind函数的功能

    (一)Matlab中sub2ind函数 1.sub2ind函数的功能 将下标转换为线性索引. 2.sub2ind函数的语法 有以下两种形式 (1)ind = sub2ind(sz, row, col) ...

  6. matlab中的sub2ind函数

    在matlab中,矩阵的存储是按列优先,sub2ind函数将矩阵中指定元素的行列下标转换成存储的序号,即线性索引号.下面,我们举例子进行说明. 1 建立一个3*4*2的矩阵 rng(0,'twiste ...

  7. MATLAB sub2ind函数用法

    sub2ind函数是MATLAB中对矩阵索引号检索的函数,用法如下: >> A=rand(5) A = 0.6850    0.0867    0.2290    0.1006    0. ...

  8. MATLAB sub2ind函数的使用

    标识方法 在matlab软件中,矩阵的元素可以使用三种方式进行标识: 全下标标识法 最经典的标识方法,使用行下标与列下标的组合用以标识单个元素 单下标标识法 矩阵的后台存储形式是按照单下标标识法作为一 ...

  9. Matlab中sub2ind函数原理及用法!

    Matlab中sub2ind函数原理及用法!

最新文章

  1. Ubuntu 10.10 安装 libx11-dev
  2. Python是如何一步步成为热门编程语言的?
  3. python集合加个逗号_8.Python集合与字符串
  4. 关键信息基础设施保护条例_韩永刚:内生安全助力关键信息基础设施保护
  5. 链表的基本操作 java_Java-实现链表的基本操作
  6. 提高代码可读性: 命名技术
  7. 厦门大学考研:必知20大时间节点
  8. miui12系统小米系统安卓系统里面存储空间占用太多如何清理
  9. 基于SSM+Vue的邮票管理系统的设计与实现Java邮票分享系统邮票鉴定前后端分离(源码调试+讲解+文档)
  10. 什么叫做私有网络VPC?
  11. 惊!又一家知名企业被查!
  12. android authority root galaxy s5,三星G9006v (Galaxy S5 联通4G)一键ROOT教程,看教程秒懂ROOT...
  13. Remote Development Tips and Tricks
  14. 列变位法解密--百度之星B题
  15. 利用json+webservice实现android访问远程数据库,利用JSON+WebService实现Android访问远程数据库...
  16. 10月17日云栖精选夜读:什么是新零售?阿里巴巴最新的报告终于说清楚了!(附报告)
  17. python网络爬虫 百度网盘_百度网盘爬虫(如何爬取百度网盘)
  18. 开发和部署Pocket Pc 安装程序
  19. 打印空心菱形c语言编程,用C语言打印空心菱形问题
  20. 苏彤,你的 Python Flask 编写生成二维码接口写完了

热门文章

  1. 算法笔记_156:算法提高 6-17复数四则运算(Java)
  2. Bootstrap系列 -- 34. 按钮下拉菜单
  3. 《转化:提升网站流量和转化率的技巧》迷你书
  4. 关于运行中输入ping后,跳出“打开方式”选择对话框的问题
  5. A Java Runtime Environment (JRE) or Java Development Kit (JDK)
  6. 使用BIOS以及直接写显存绘制图形
  7. android LayoutInflater.inflate()的参数及其用法
  8. Android 面试精华题目总结
  9. 使用Python实现Hadoop MapReduce程序
  10. 四轴飞行器1.1 Matlab 姿态显示