Matlab中矩阵编号方式以及一维二维三维数据间的相互转换

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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

商功贤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值