精华内容
下载资源
问答
  • (介绍包含图像信息的三维数组,懂了的直接第2步,有更好介绍建议的请留言) 首先应该明确256*256*256可以理解为在 x y z 三个方向上分别划分了256*256*256个网格,也就是说是一个立体的三维网格(可想象成立方体的...

    背景描述:我们得到了一个包含像素的256*256*256的三维图像(用三维矩阵表示),那我们怎么找到每个像素所包含的坐标呢?

    1. 怎么理解包含像素的256*256*256的三维图像?(介绍包含图像信息的三维数组,懂了的直接第2步,有更好介绍建议的请留言)

    首先应该明确256*256*256可以理解为在 x y z 三个方向上分别划分了256*256*256个网格,也就是说是一个立体的三维网格(可想象成立方体的切割,切割线的交界处便是我们可以利用的坐标点信息)。

    其次256*256*256的三维矩阵如何表示三维坐标和像素4个信息的?当然是因为我们的三维矩阵不仅有维度信息(3个信息),维度上还拥有数值,那便是像素信息啦。

    最后我们再屡一下,我们现在的目标便是通过三维图像上的像素值,也就是三维坐标中的数值,来寻找像素值对应的坐标信息,说白了就是三维坐标中的数值对应的维度信息,明确了之后就可以开始编程序啦,就 so easy 啦!

    2. 怎么寻找三维数组中某个数值对应的维度信息?

    a. 寻找坐标信息常用函数:find

    aaa = [1,2,3,4,5,6,0];
    find(aaa==1)   % 寻找aaa中1的位置
    
    bbb = [1,2,3;2,3,4;3,4,5];
    [row,col] = find(bbb==3);    % 寻找二维数组中3所在的位置,row返回所在列,col返回所在行

     b. 三维数组就得另辟蹊径了,我也试过其他方式,但是我发现用find是最简单直观的方式,怎么用呢?这里需要引入一个新的函数ind2sub

     它的意思就是将索引值转换成我们所熟悉的下标,具体用法matlab里面(doc ind2sub)就可以了,下面我们直接粘代码:

    % 1. 构造一个三维数组,如果你自己有了就无须改步
    D2 = [1,2,3;4,5,6;7,8,9];
    D3(:,:,1) = D2;
    D3(:,:,2) = 2*D2;
    D3(:,:,3) = 3*D2;
    
    % 2. 开始我们的表演(寻找维度)
    dim = [3 3 3]  % 三维数组的维度,我们定义的是3*3*3,一般图像的是256*256*256
    pixel = 3;  % 假设需要寻找的像素为3
    col = find(D3(:)==pixel);    % 首先需要将3为数组转换为1维,求其索引值,然后再将索引值转换为下标
    [T1,T2,T3] = ind2sub(dim,col);
    pos = [T1,T2,T3];    % pos值即为我们所求的三维数组维度,也是对应于像素3的图像所在坐标值

    ------------------------------------------------小编今日无话说------------------------------------------------------------

    今日没有长篇大论,仅是最近编程找了许久未能很好解决问题的一个小点,希望可以帮助到思维方式跟我相似的人,若有其他建议,欢迎评论区讨论,欢迎大家提出批评的声音!!!!

    展开全文
  • matlab创建三维数组的三种方法

    万次阅读 多人点赞 2014-11-10 20:52:32
    Matlab中习惯性的会将二维数组中的第一维称为“行”第二维称为“列”,而对于三维数组的第三位则是习惯性的称为“页”。在Matlab中将三维及三维以上的数组统称为高维数组,三维数组也是高级运算的基础,本文将介绍...

    在Matlab中习惯性的会将二维数组中的第一维称为“行”第二维称为“列”,而对于三维数组的第三位则是习惯性的称为“页”。在Matlab中将三维及三维以上的数组统称为高维数组,三维数组也是高级运算的基础,本文将介绍三种创建三维数组的方法。(注:本文为实例操作步骤,一些代码并没做过多介绍)

    使用下标创建三维数组

    1. 1

      在Matlab命令框中输入以下代码可以创建简单的三维数组:

      for i=1:2

      for j=1:2

      for k=1:2

      A(i,j,k)=i+j+k;

      end

      end

      end

    2. 2

      要查看程序结果。在命令窗口中输入变量名称按【Enter】,即可得到相应的结果。如

      输入:A(:,:,1)

      得到:

      ans =

           3     4

           4     5

      输入:A(:,:,2)

      得到:ans =

           4     5

           5     6

      matlab创建三维数组的三种方法
      END

    使用低维数组创建三维数组

    1. 1

      我们可以先输入一个二维数组,然后通过第三维数组与其关系生成第三维数组,例如输入以下代码可以生成三维数组:

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

      D3(:,:,1)=D2;

      D3(:,:,2)=2*D2;

      D3(:,:,3)=3*D2;

    2. 2

      要查看程序结果。

      输入:D2 并按【Enter】可以查看输入的二维数组。

      得到:

      D2 =

           1     2     3

           4     5     6

           7     8     9

      输入:D3 并按【Enter】可以查看生成的三维数组。

      D3(:,:,1) =

           1     2     3

           4     5     6

           7     8     9

      D3(:,:,2) =

          2     4     6

           8    10    12

          14    16    18

      D3(:,:,3) =

           3     6     9

          12    15    18

          21    24    27

      matlab创建三维数组的三种方法
      END

    使用创建函数创建三维数组

    1. 1

      使用Cat命令来创建高维数组。Cat命令的个事为【C=cat(dim,A1,A2,A3,A4……)】其中dim表示的是创建数组的维度,A1,A2,A3,A4表示的是各维度上的数组。在命令窗口中输入以下代码即可创建一个简单的三维数组:

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

      C=cat(3,D2,2*D2,3*D2);

    2. 2

      要查看程序结果

      输入:C(:,:,1) 并按【Enter】

      得到:

      ans =

           1     2     3

           4     5     6

           7     8     9

      输入:C(:,:,2) 并按【Enter】

      得到:

      ans =

           2     4     6

           8    10    12

          14    16    18

      输入:C(:,:,3) 并按【Enter】

      得到:

      ans =

           3     6     9

          12    15    18

          21    24    27

      matlab创建三维数组的三种方法
    3. 3

      还可以利用【repmat】命令以及【reshape】命令在生成高维数组,因为用到的概率不涉及很高这里不一一阐述。

      END

    展开全文
  • matlab维数组的创建及其变换

    千次阅读 2020-01-14 23:05:26
    很基础的问题,但很容易忘记。...2、在MATLAB中,创建二维数组可以使用空格+分号的形式。每一行的各个元素使用空格隔开,换行时使用分号隔开。需要注意的是,每一行的元素个数需要相同,不相同的情况下容易报错。...

    很基础的问题,但很容易忘记。。

    1、MATLAB中,一般使用方括号([]),逗号(,),分号(;)与空格来创建二维数组。空数组是一种非常特殊的数组,没有任何元素。创建一个空数组:只要把一个方括号复制给一个变量就可以了。

    在这里插入图片描述

    2、在MATLAB中,创建二维数组可以使用空格+分号的形式。每一行的各个元素使用空格隔开,换行时使用分号隔开。需要注意的是,每一行的元素个数需要相同,不相同的情况下容易报错。

    在这里插入图片描述

    3、在MATLAB中,也可以使用逗号+分号的形式创建数组。每一行的各个元素使用逗号隔开,换行时使用分号隔开。每一行的元素个数需要相同,如果每一行的元素个数不同,MATLAB会报错。

    在这里插入图片描述

    4、在MATLAB中,可以使用冒号创建数组。A=a:b表示从实数a到实数b创建一个间隔为1的数组A。使用上述方式创造的数组A是一维数组,也可以被叫做行向量。数组A相邻两个元素的差值默认为1。
    在这里插入图片描述

    5、也可以使用一种更加自由的方式,创建间距固定的递增或递减数组。A=a🅱️c表示从实数a到实数b以间隔为c递增或者递减,创造出数组A。使用这种方法创建数组时,数组A的第一个元素与最后一个元素分别是a和b,数组相邻两个元素之间的差值为c。
    在这里插入图片描述


    维数组实际上也是一个矩阵。应此直接创建一个矩阵就行。创建的方法你应该会吧,就是直接按行方式输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔,且空格个数不限;不同的行用分号(;)分隔。所有元素处于一方括号([ ])内。
    比如,创建一个3×5的矩阵(对应3×5的二维数组)
    A = [12 62 93 -8 22; 16 2 87 43 91; -4 17 -72 95 6]
    A =
    12 62 93 -8 22
    16 2 87 43 91
    -4 17 -72 95 6
    当然也可以用专门用来创建多维数组的cat函数来创建。
    具体如下:
    函数 cat
    格式 A=cat(n,A1,A2,…,Am)
    说明 n=1和n=2时分别构造[A1;A2]和[A1,A2],都是二维数组,而n=3时可以构造出三维数组。
    例如:

    A1=[1,2,3;4,5,6;7,8,9];A2=A1’;
    A3=cat(2,A1,A2)
    A3 =
    1 2 3 1 4 7
    4 5 6 2 5 8
    7 8 9 3 6 9
    这样A3就是一个二维数组
    此外还有诸如特殊矩阵的创建方法等 这里就不列举了 你可以百度 或者Google一下
    二维数组的变换我还不太确定你的意思:
    这里就提供几个矩阵的操作:
    1.矩阵的变维
    矩阵的变维有两种方法,即用“:”和函数“reshape”,前者主要针对2个已知维数矩阵之间的变维操作;而后者是对于一个矩阵的操作。
    (1)“:”变维
    例1-48
    A=[1 2 3 4 5 6;6 7 8 9 0 1]
    A =
    1 2 3 4 5 6
    6 7 8 9 0 1

    B=ones(3,4)
    B =
    1 1 1 1
    1 1 1 1
    1 1 1 1

    B(:)=A(😃
    B =
    1 7 4 0
    6 3 9 6
    2 8 5 1
    (2)Reshape函数变维
    格式 B = reshape(A,m,n) %返回以矩阵A的元素构成的m×n矩阵B
    B = reshape(A,m,n,p,…) %将矩阵A变维为m×n×p×…
    B = reshape(A,[m n p…]) %同上
    B = reshape(A,siz) %由siz决定变维的大小,元素个数与A中元素个数
    相同。
    矩阵变维例子:

    a=[1:12];
    b=reshape(a,2,6)
    b =
    1 3 5 7 9 11
    2 4 6 8 10 12
    2.矩阵的变向
    (1)矩阵旋转
    函数
    格式 B = rot90 (A) %将矩阵A逆时针方向旋转90°
    B = rot90 (A,k) %将矩阵A逆时针方向旋转(k×90°),k可取正负整数。
    例如:

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

    Y1=rot90(A),Y2=rot90(A,-1)
    Y1 = %逆时针方向旋转
    3 6 9
    2 5 8
    1 4 7
    Y2 = %顺时针方向旋转
    7 4 1
    8 5 2
    9 6 3
    (2)矩阵的左右翻转
    函数 fliplr
    格式 B = fliplr(A) %将矩阵A左右翻转
    (3)矩阵的上下翻转
    函数 flipud
    格式 B = flipud(A) %将矩阵A上下翻转
    例如:

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

    B1=fliplr(A),B2=flipud(A)
    B1 =
    3 2 1
    6 5 4
    B2 =
    4 5 6
    1 2 3
    (4)按指定维数翻转矩阵
    函数 flipdim
    格式 B = flipdim(A,dim) % flipdim(A,1) = flipud(A),并且flipdim(A,2)=fliplr(A)。
    例如

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

    B1=flipdim(A,1),B2=flipdim(A,2)
    B1 =
    4 5 6
    1 2 3
    B2 =
    3 2 1
    6 5 4
    (5)复制和平铺矩阵
    函数 repmat
    格式 B = repmat(A,m,n) %将矩阵A复制m×n块,即B由m×n块A平铺而成。
    B = repmat(A,[m n]) %与上面一致
    B = repmat(A,[m n p…]) %B由m×n×p×…个A块平铺而成
    repmat(A,m,n) %当A是一个数a时,该命令产生一个全由a组成的m×n矩阵。
    例如

    A=[1 2;5 6]
    A =
    1 2
    5 6

    B=repmat(A,3,4)
    B =
    1 2 1 2 1 2 1 2
    5 6 5 6 5 6 5 6
    1 2 1 2 1 2 1 2
    5 6 5 6 5 6 5 6
    1 2 1 2 1 2 1 2
    5 6 5 6 5 6 5 6
    3.矩阵元素的数据变换
    对于小数构成的矩阵A来说,如果我们想对它取整数,有以下几种方法:
    (1)按-∞方向取整
    函数 floor
    格式 floor(A) %将A中元素按-∞方向取整,即取不足整数。
    (2)按+∞方向取整
    函数 ceil
    格式 ceil(A) %将A中元素按+∞方向取整,即取过剩整数。
    (3)四舍五入取整
    函数 round
    格式 round (A) %将A中元素按最近的整数取整,即四舍五入取整。
    (4)按离0近的方向取整
    函数 fix
    格式 fix (A) %将A中元素按离0近的方向取整
    例如:

    A=-1.5+4*rand(3)
    A =
    2.3005 0.4439 0.3259
    -0.5754 2.0652 -1.4260
    0.9274 1.5484 1.7856

    B1=floor(A),B2=ceil(A),B3=round(A),B4=fix(A)
    B1 =
    2 0 0
    -1 2 -2
    0 1 1
    B2 =
    3 1 1
    0 3 -1
    1 2 2
    B3 =
    2 0 0
    -1 2 -1
    1 2 2
    B4 =
    2 0 0
    0 2 -1
    0 1 1
    (5)矩阵的有理数形式
    函数 rat
    格式 [n,d]=rat (A) %将A表示为两个整数矩阵相除,即A=n./d。
    例如: 对于上例中的A

    [n,d]=rat(A)
    n =
    444 95 131
    -225 2059 -472
    166 48 1491
    d =
    193 214 402
    391 997 331
    179 31 835
    (6)矩阵元素的余数
    函数 rem
    格式 C = rem (A, x) %表示A矩阵除以模数x后的余数。若x=0,则定义rem(A, 0)=NaN,若x≠0,则整数部分由fix(A./x)表示,余数C=A-x.*fix (A./x)。允许模x为小数。
    如果还不详细 你就查阅帮助,上面有很详细的解答

    书上有的吧 刘卫国第二版的《MATLAB程序设计与应用》说得很清楚

    展开全文
  • Matlab 三维数组

    千次阅读 2012-11-16 13:42:31
    matlab创建三维矩阵办法[复制链接]     tomorrow tomorrow当前离线 注册时间2010-5-5最后登录2011-11-12阅读权限50积分811精华0帖子278 253 ...
    matlab创建三维矩阵办法
    [复制链接] 
    
      
    tomorrow 当前离线
    注册时间
    2010-5-5
    最后登录
    2011-11-12
    阅读权限
    50
    积分
    811
    精华
    0
    帖子
    278
    查看详细资料

    253

    主题

    3

    听众

    811

    积分

    高级会员

    Rank: 4Rank: 4Rank: 4Rank: 4

    高级会员, 积分 811, 距离下一级还需 189 积分
    跳转到指定楼层
    楼主
    发表于 2010-6-6 20:37:26 | 只看该作者 | 倒序浏览
    所使用函数为  cat

    格式  A=cat(n,A1,A2,…,Am)

    说明n代表维数
      n=1和n=2时分别构造[A1;A2]和[A1,A2],都是二维数组,而n=3时可以构造出三维数组。

    >> A1=[1,2,3;4,5,6;7,8,9];A2=A1';A3=A1-A2;
    >> A4=cat(3,A1,A2,A3)         %表示创建一个三维矩阵

    A4(:,:,1) =                        %表示第一维,单个元素调用方式可用A4(i,j,1)
        
         1     2     3
         4     5     6
         7     8     9
    A4(:,:,2) =
         1     4     7
         2     5     8
         3     6     9
    A4(:,:,3) =
         0    -2    -4
         2     0    -2
         4     2     0
    或用另一种原始方式可以定义:

    >> A1=[1,2,3;4,5,6;7,8,9];A2=A1';A3=A1-A2;
    >> A5(:,:,1)=A1, A5(:,:,2)=A2, A5(:,:,3)=A3
    A5(:,:,1) =
         1     2     3
         4     5     6
         7     8     9
    A5(:,:,2) =
         1     4     7
         2     5     8
         3     6     9
    A5(:,:,3) =
         0    -2    -4
         2     0    -2
         4     2     0
    展开全文
  • Matlab的多维数组操作

    2021-09-10 19:46:06
    例如,三维数组使用三个下标。前两个维度就像一个矩阵,而第三个维度表示元素的页数或张数。 创建多维数组 要创建多维数组,可以先创建二维矩阵,然后再进行扩展。例如,首先定义一个 3×3 矩阵,作为三维数组中...
  • MATLAB零基础入门教程,主要介绍数组和矩阵、数据类型和M文件设计等。很详细地介绍了MATLAB语言的基础知识。 本课程的特点是内容系统全面,条理清晰,并且内容比较新,讲了表、时间表等新的数据类型。 ...
  • (MATLAB)在三维矩阵中使用find

    千次阅读 2020-12-09 10:53:37
    三维或更高维矩阵中使用find函数
  • Matlab:多个数组实现结构体排序

    千次阅读 2018-08-13 17:15:05
    我在Matlab中经常会遇到诸如此类的问题: 要对多个数组进行排序,但是这几个数组之间有很大的关联,排完序之后他们的相对顺序是不能变的,譬如说,原来数组A中的排序前的第1个元素排序后变成了第5个元素,那么我的...
  • Matlab中创建元胞数组

    2020-06-19 15:11:50
    当要将数据放入一个元胞数组中时,请使用元胞数组构造运算符{}创建该数组。 myCell = {1, 2, 3; 'text', rand(5,10,2), {11; 22; 33}} myCell=2×3 cell {[ 1]} {[ 2]} {[ 3]} {'text'} {5x10x2 double} {3x1...
  • MATLAB生成维体数据

    千次阅读 2020-05-20 10:00:01
    之前写了医学影像三维重建的文章,许多小伙伴都来问测试数据的model是怎么生成的。这个其实是MATLAB基础,但由于询问的人太多,就在这里统一回复了。内容比较简单,适用于刚开始用MATLAB的伙伴。
  • Matlab基础之单元数组和结构数组

    万次阅读 2016-10-03 19:25:05
    前言: 单元数组和结构数组是一种新的数据类型,能将不同类型、不同数的数组组合在一起,从而方便对不同的数据类型方便管理和维护。 一、单元数组(细胞数组
  • matlab定义数组和相关函数

    万次阅读 2019-11-04 19:44:50
    matlab作为一个大型的计算软件,里面有许多对数组的操作,所以数组的定义和数组的操作是一个必不可少的部分。 1 数组的定义 在matlab中对数组的定义较为灵活,因为特殊矩阵较多,所以有许多特定的定义方法。比较...
  • MATLAB是一种计算机的高级解释语言。我们学习C++时有一个动态数组的概念,可以实时增加行或列...MATLAB的动态数组则是在切片中使用“end+n”的形式实现,n是一个正整数。下面来看看两个实例: Exp1: a=[1,2;2,3] ...
  • 使用matlab向已有的三维信号,如Y = (32,32,512)中的每一个向量(1,1,512)加入特定分布的噪声。 1. 高斯白噪声 使用AWGN函数向Y加高斯白噪声。 AWGN函数的用法 基础知识 dBw与dBm:dBw 与dBm一样,dBw是一个...
  • 向量是一维数组,矩阵是二维数组MATLAB中的特殊数组 zeros()函数是用来创建一个全零的数组 例如 zeros(5) MATLAB执行上面示例代码,得到以下结果 - Trial>> zeros(5) ans = 0 0 0 0 0 0 0 0 0 0 0 0 ...
  • 10_8 低维数组操作repmat函数,cat函数,diag函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 《matlab 程序设计与综合应用》张德丰等著 感谢张老师的书籍,让我领略到matlab的便捷 《MATLAB技术大全》葛...
  • 转自http://blog.csdn.net/peterkang202/article/details/26623219正如matlab(矩阵实验室)这个名字一样,matlab的数据结构只有...事实上对于matlab来说数、数组或向量和二矩阵在本质上没有任何区别,他们的数都
  • MATLAB数组运算及数组化编程

    千次阅读 2020-03-03 21:58:04
    维数组元素的寻访.数组运算非数的问题 前言 编程语言的编译执行有俩种: 解释型语言:按照源程序中的语句顺序,直接的逐句进行分析解释,并立即执行。 编译型语言:先把源代码全部翻译为目标代码,然后运行目标...
  • 上三角矩阵储存为一维数组

    千次阅读 2017-12-24 19:43:52
    压缩矩阵 ,将矩阵存储为一维矩阵,同时...你应该是用一个一维数组存储数据,这样才能达到节省空间的目的,然后输出的时候显示式n*n的矩阵。。。。然后我又重新改了,以下是我的答案,如有错误,添加微信macforyou1
  • MATLAB函数句柄、单元数组和结构

    千次阅读 2016-08-04 19:36:35
    关于MATLAB函数句柄、单元数组和结构
  • Matlab学习笔记 1、数值数组的创建

    千次阅读 2019-05-04 14:27:00
    一、一维数组的创建方法: >>data1=[pi;log(5);7+6;2^3]; % 1、直接输入法 >>data2=[pi log(5) 7+6 2^3]; >> data1,data2 data1 = 3.1416 1.6094 13.0000 8.0000 data2 = 3....
  • matlab中将三维矩阵b保存到文件b.mat中,b三维矩阵如下: 二、三维矩阵在mat文件中的存储格式 此处不详细讲解mat文件格式,有兴趣可以自行了解:https://www.cnblogs.com/jackcin/p/3416099.html 此处说明三维...
  • MATLAB-数组

    2021-07-18 17:29:03
    MATLAB中所有的数据类型的变量是多维数组,向量是一个一维阵列,矩阵是一个二维数组。 首先,我们先来看一些特殊类型的数组。 MATLAB中的特殊阵列 MATLAB中会使用一些函数来建立一些特殊的阵列,对于所有这些...
  • Matlab三维数据差值 查表 拟合

    千次阅读 2014-06-28 18:05:32
    插值法是实用的数值方法,是函数逼近的重要方法。...如何根据观测点的值,构造一个比较简单的函数y=φ(x),使函数在观测点的值等于已知的数值或导数值。用简单函数y=φ(x)在点x处的值来估计未知函数y=f
  • C++数组初始化

    千次阅读 2018-12-28 11:19:39
    C++数组初始化 定义: int *pia = new int[10]; // array of 10 uninitialized ints 此 new 表达式分配了一个含有 10 个 int 型元素的数组,并返回指向该数组第一个元素的指针,此返回值初始化了指针 pia...
  • 此new表达式分配了一个含有 10 个int型元素的数组,并返回指向该数组第一个元素的指针,此返回值初始化了指针pia。 在自由存储区中创建的数组对象是没有名字的,只能通过其地址间接地访问堆中的对象。 注意:C++...
  • y=cols2diags3(x) 构造一个 3D 数组 y,y 的页面是对角矩阵,元素为 2D 矩阵 x 的列
  • MATLAB —— 向量,矩阵,数组

    千次阅读 2019-01-26 20:33:45
    MATLAB —— 向量,矩阵,数组   目录 MATLAB —— 向量,矩阵,数组 一、向量 1、向量定义 ...、数组 ...向量是数字的一维数组。有两种类型,一种是行向量(逗号或空格分隔),一种是列向量(分号...
  • MATLAB--基于BP神经网络的手写数字识别

    千次阅读 多人点赞 2020-03-06 21:12:13
    MATLAB–基于BP神经网络的手写数字识别 在干活的过程中整理下来的,希望对大家有帮助。 手写数字识别技术作为图像处理和模式识别中的研究热点,在大规模数据统计(如行业年检、人口普查等)、票据识别、财务报表、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,952
精华内容 1,180
关键字:

matlab构造三维数组

matlab 订阅