目录

  • 1 在MATLAB中初始化二维矩阵
  • 2 在MATLAB中初始化三维矩阵
  • 3 在MATLAB中初始化四维矩阵
  • 4 在MATLAB中初始化N维矩阵

1 在MATLAB中初始化二维矩阵

在MATLAB中初始化一个二维矩阵是很容易的,我们既可以直接把矩阵的元素值写出,比如下面这样:

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


也可以直接用函数ones()、zeros()、rand()等函数初始化一个全1或全0或均匀随机分布等的矩阵,然后再对其中的元素进行访问赋值,比如下面这样:

B = zeros(3,4);
B(1,1)=1;
B(1,2)=2;
B(1,3)=3;
B(1,4)=4;


从上面的示例中我们可以看出,第一个索引代表行,第二个索引代表列。

2 在MATLAB中初始化三维矩阵

我们先试一下可不可以直接用元素值初始化一个三维矩阵。
假设我们要初始化一个两通道、三行、四列的三维矩阵,看下下面这个代码行不行。

C=[[11 12 13 14;15 16 17 18;19 20 21 22];...[23 24 25 26;27 28 29 30;31 32 33 34]];

运行结果如下:

可见,没有得到我们想要的三维矩阵,这样的写法得到的是两个矩阵合并后的结果。

通常,我们初始化一个三维矩阵,都是用ones()、zeros()等这些函数进行。
比如我们刚才想要得到的两通道、三行、四列的三维矩阵可以像下面这样初始化。

D = zeros(3,4,2);

运行结果如下图所示:


从上面的运行结果可以看出,在MATLAB中,矩阵的维度顺序是:第一个索引为行索引,第二个索引为列索引,第三个索引为通道索引(也称为页索引)。
在Python中,用OpenCV的函数imread()读取的图像数据的维度顺序与其ndarray的常规矩阵的维度顺序是不一样的,详情见:https://blog.csdn.net/wenhao_ir/article/details/124422709
所以这里我们测试下MATLAB的图像处理函数imread()读取到的图像数据的维度顺序是不是第一个索引为行索引,第二个索引为列索引,第三个索引为通道索引。
测试代码如下:

img1 = imread('F:\material\images\P0022-view-06.jpg');

运行结果如下:


从这个运行结果中可以看出,MATLAB的图像处理函数imread()读取到的图像数据的维度顺序与其常规矩阵的维度顺序是一致的,都是“第一个索引为行索引,第二个索引为列索引,第三个索引为通道索引(也称为页索引)”

3 在MATLAB中初始化四维矩阵

这个与三维的方法一样,就是用ones()、zeros()等函数进行,比如下面的语句可创建四维矩阵。

F = zeros(2,3,4,5);

运行结果如下:


从上面的运行结果我们可以看出,维度顺序为:第一个索引代表行,第二个索引代表列,第三个索引代表第三维度,第四个索引代表第四维度。
我们进行赋值操作看是不是这样:

F = zeros(2,3,4,5);
F(1,1,4,5)=5;

运行结果如下:

可见,这个维度索引顺序就是如我们上面所述的,第一个索引代表行,第二个索引代表列,第三个索引代表第三维度,第四个索引代表第四维度。

4 在MATLAB中初始化N维矩阵

都会初始化三维矩阵和四维矩阵了,还不会初始化N维矩阵么?

MATLAB中怎样初始化(创建)二维、三维、四维以及多维矩阵,各维度的索引顺序是怎样的?相关推荐

  1. matlab中for循环设置二维数组,MATLAB中定义赋值一个二维数组

    MATLAB中定义赋值一个二维数组 答: 分号:; 因特网能提供的最基本服务 答:E-mail, WWW, FTP 劳动合同中,用人单位给予劳动者低于当地工资最低水平的违反了()合法原则 答:内容合法 ...

  2. matlab中的零矩阵创建2021-05-19

    matlab中的零矩阵创建 01 在MATLAB中创建零矩阵函数式为zeros函数,具体用法为 A=zeros(n):生成n乘n的全零矩阵: A=zeros(m,n)或者A=zeros([m,n])生 ...

  3. 使用matlab中cell2mat报错:错误使用cat 要串联的数组的维度不一致

    使用matlab中cell2mat报错:错误使用cat 要串联的数组的维度不一致 从Excel中用readtable读取数据,因为默认每一列都是cell类型,想转成matrix类型方便使用. 在mat ...

  4. MATLAB利用FIR滤波器创建二维滤波器

    [f1,f2] = freqspace(25,'meshgrid'); Hd = zeros(25,25); d = sqrt(f1.^2 + f2.^2) < 0.5; Hd(d) = 1; ...

  5. matlab已知点求二维和三维中两直线夹角

    链接:http://blog.sina.com.cn/s/blog_994de1530101em5u.html (1)二维:theta=acosd(dot([x1-x2,y1-y2],[x3-x4,y ...

  6. 二维三维四维vector乃至多维vector数组的建立

    二维vector的建立方式如下 vector<vector<int>> a(n,vector<int>(n)); 三维vector的建立方式如下 vector< ...

  7. matlab中图像分割技术之二阈值分割

    1.直方图双峰法 2.最大类间方差法 3.迭代法 阈值化图像分割是一种最基本的图像分割方法,其基本原理就是选取一个或多个处于灰度图像范围之中的灰度阈值,然后将图像中各个像素的灰度值与阈值比较,并根据比 ...

  8. matlab如何创建table,table,matlab,中table数据类型,创建,调用,访问

    MATLAB table数据结构 目录: ?关于作者 ?table简介 o为什么需要table数据结构 o通过导入数据构造table对象 o调用table构造函数来构造table对象 o通过转换函数构 ...

  9. matlab中如何做连乘循环,如何利用for循环实现矩阵连乘

    这是基本的写法 >> syms theta1 alpha1 a1 d1 theta2 alpha2 a2 d2 theta3 alpha3 a3 d3 ... theta4 alpha4 ...

最新文章

  1. valgrind——Callgrind检测程序代码的运行时间和调用过程,程序分析性能。
  2. 大学可以学前端开发_所有开发人员在大学中应该学习的东西
  3. Juniper防火墙丢失ScreenOS的灾难恢复
  4. 爬虫笔记:Python Selenium详解
  5. 实验分享:用Python生成个性化二维码
  6. Java并发编程的基础-为什么要复位
  7. [css] 为什么说不提倡用1px的小尺寸图片做背景平铺?
  8. SpringCloud 入门教程(一): 服务注册
  9. 回首阿里10年产品经理路,1点忠告希望在2021帮到你
  10. win2k,XP下用setupapi.dll自动安装Driver
  11. 微服务熔断限流Hystrix之流聚合
  12. openstack nova后端使用ceph rbd(增加在线迁移live_migrate和快照snapshot功能)
  13. 谷歌归期未定,但敏感词库已经建起来了
  14. 什么是shapefile文件
  15. 加密狗复制,破解,备份,模拟,OEM ,写狗工具开发
  16. 购买的域名设置域名解析
  17. 【unity发布webgl】遇到的问题和解决办法
  18. tomcat7 性能优化
  19. Spring系列第2篇:控制反转(IoC)与依赖注入(DI),晦涩难懂么?
  20. 开放数据库:中医古方数据库

热门文章

  1. eyoucms 列表分页修改
  2. MyTest.axf section `.text‘ will not fit in region `Flash30‘
  3. 微信小程序用户头像昵称获取新规适配教程,用户自定义头像昵称
  4. 回收站恢复的文件找不到了怎么办?竟然还有这3种靠谱的方案
  5. python倒序排列方法梳理
  6. hp服务器启动u盘装系统,hp惠普笔记本进入bios设置u盘启动装系统的方法步骤详细教程...
  7. 拯救者Y9000P 2022 ubuntu18.04问题总结
  8. java代码混淆器proguard使用大法3种
  9. C# 引用C++动态库方法
  10. 认识iTween插件和安装