【问题标题】:Plotting values from a slice of a 3D matrix in MATLAB/Octave在 MATLAB/Octave 中从 3D 矩阵的切片中绘制值
【发布时间】:2013-01-17 17:04:54
【问题描述】:

如果我有一个 3D 矩阵,X 就是4 x 10 x 50

矩阵由第一维中的位置和速度、第二维中的不同粒子(或船或其他)索引以及第三维中粒子运动的不同时间步长组成。也许不是那么重要,但也许它澄清了我的问题。

假设我想绘制X 的值,用于在第三维度的前两个维度中的特定索引

>> plot(X(1,1,:))
Error using plot
Data may not have more than 2 dimensions

即使提供的值是一维的,我也不能在这里使用 plot,因为它们是像这样单独给出的:

>> X(1,1,1:5)

ans(:,:,1) =
10

ans(:,:,2) =
11.4426

ans(:,:,3) =
12.5169

ans(:,:,4) =
13.7492

ans(:,:,5) =
14.9430

如何将X( 1, 1, :) 的结果转换为向量?

【问题讨论】:

  • class(X) 给出答案double

标签: matlab matrix 3d


【解决方案1】:

使用X( 1, 1, : )X 进行索引会返回一个3D 矩阵。但是,plot 要求其输入是向量或二维矩阵。要将X( 1, 1, : ) 转换为向量,您需要删除单件维度。 builtin function squeeze 这样做:

试试:

X2 = squeeze( X( 1, 1, : ) );
plot( X2 )

【讨论】:

  • 谢谢!这正是我想要的!
【解决方案2】:

您索引它的方式实际上会产生一个二维向量。所以size(A(:,:,1) 实际上是4x10

要绘制它,请使用 Matlab 的挤压运算符

plot(squeeze(X(:,:,1))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    相关资源
    最近更新 更多