MATLAB中提取三维数据z方向(第三维度)值的方法求助
解决方法
先确认变量的真实结构,在命令行执行以下命令:
size(P.E3D) % 查看维度大小 class(P.E3D) % 查看变量类型 whos P.E3D % 查看详细内存信息从你遇到的报错和返回结果来看,
P.E3D的第一、第二维度大概率只有1个元素,第三维度是101个元素(即维度为1×1×101)。直接提取第三维度所有值的简便方法:
- 若要得到101元素的列向量:
a = P.E3D(:); - 若要保留维度结构(去掉多余的单维度):
a = squeeze(P.E3D); - 也可以直接指定维度提取:
之后如果需要转成向量,再加a = P.E3D(1,1,:);a = a(:);即可。
- 若要得到101元素的列向量:
为什么之前的操作出错?
- 用
P.E3D(75,75,n)报错,是因为第一、第二维度的最大索引只有1,超出范围就会报错; - 用
P.E3D(1,1)得到101份重复数据,是因为当你只指定前两个维度时,Matlab会自动遍历第三维度的所有元素,返回的是1×1×101的数组,看起来像是重复101次的单值(其实是第三维度的所有值堆叠)。
- 用
内容的提问来源于stack exchange,提问作者Trent B
相关产品推荐
相关产品推荐

