Matlab中矩阵编号方式以及一维二维三维数据间的相互转换
一、问题的提出
我们用matlab进行二维与三维成图的时候,经常涉及到网格填色,色彩数据来源于二维或三维矩阵,为了得到较好的成图效果,必须知道二维或三维矩阵编号的方式,以及matlab数据间相互转换的方式,为此本文深入研究了matlab矩阵编号及数据维度间的相互转换。

二、一维数据转为二维和三维
clear
close all
clc
% % 此程序用来研究matlab数据维度相互转换
% a = 1:12;
% a
%
% % 一维数据转二维
% b = reshape(a,3,4);
% b
%
% % matlab是首先按列操作的
% % matlab读写数据都是先按列操作,再按行操作
%
% % 一维数据转三维
% c = reshape(a,2,2,3);
% c
%
% % 二维数据转三维
% d = reshape(b,2,2,3);
% d
三、三维数据转为一维和二维
close all
clear
clc
% 此程序用来研究mtalb高维数据转为一维
% 生成一个三维数据
a = meshgrid(1:3,1:3,1:3);
a
% % 三维数据转成一维数据
% b = a(:);
% b
%
% % 或者用reshape方法
% c = reshape(a,1,[]);
% c
%
% % 注意reshape方法是将矩阵转成一列
% % 用reshape方法转一维数据速度快了接近一倍。
%
% % 三维数据转二维数据
% a1 = a(:,:,2);
% a1
%
% % 将三维数据a的第二页提取出来
%
% a2 = a(:,2,:);
% a2
% % 将三维数据每一页的第二列数据提取出来
%
% a3 = a(2,:,:);
% a3
% % 将三维数据每一页的第二行数据提取出来
% 三维数据转为二维数据
% 我们生成的数据a是一个三维矩阵,有3行3列3页
% 每一页有3行3列,一共有27个数值
d = reshape(a,3,9);
d
% 将a转化为3行9列数据
% 注意matlab读取数据是按列优先的,与fortran相同
% 而 c++ 是优先按行读取数据
% 所以我们这里把a转换为3行9列的数据,是优先读取列的数据
% e = reshape(a,9,3);
% e
% % 将a转换为9行3列的数据
% % 同样的,matlab保存数据也是按列优先的。
% % a的第一页数据是
% 1 2 3
% 1 2 3
% 1 2 3
% % 由于matlab优先读取列,优先存贮列
% % 所以e的第一列为
% 1
% 1
% 1
% 2
% 2
% 2
% 3
% 3
% 3
% % 而d的前三列为
% 1 2 3
% 1 2 3
% 1 2 3

被折叠的 条评论
为什么被折叠?



