在MATLAB中将多个2D图堆叠成单个3D图

Far*_*bod 7 matlab plot

我有多个FFT图,我想在一个图中一起显示它们,如附图所示.

在此输入图像描述

我没有任何线索如何开始.任何帮助,将不胜感激!

ray*_*ica 7

这并不是那么糟糕.您可以使用它plot3来帮助您进行此类绘图.有了plot3,你需要做的是让y您的每个地块的价值z值,而不是,如果你想图表分开,你需要改变y这个3D图值.我们举个例子.假设我想以这种方式在一个图上放置4个图形.图表是:

  • y = sin x
  • y = cos x
  • y = exp(-x)*sin(x)
  • y = exp(-x)*cos(x)

因此,x对于每个图,您将拥有一组相同的值.您将拥有一组不同的y值,并且取决于图表本身.您将这些z值设为这些值,然后对于每个图形,您将拥有不同的y值,但是对于每个绘图,它们将是相同的,因为您将要使用这些值相应地将每个图形偏移到单独的他们.因此:

%// Define the x values
x = (0:0.001:10).';
xMat = repmat(x, 1, 4); %// For plot3

%// Define y values
y = 0:0.001:0.003;
yMat = repmat(y, numel(x), 1); %//For plot3

%// Define z values
z1 = sin(x);
z2 = cos(x);
z3 = exp(-x).*sin(x);
z4 = exp(-x).*cos(x);
zMat = [z1 z2 z3 z4]; %// For plot3

plot3(xMat, yMat, zMat, 'b'); %// Make all traces blue
grid;
xlabel('x'); ylabel('y'); zlabel('z');
view(40,40); %// Adjust viewing angle so you can clearly see data
Run Code Online (Sandbox Code Playgroud)

这是我得到的数字:

在此输入图像描述


诀窍是形成正确的矩阵,以便plot3正确进行.如何plot3工作原理是,你可以把单一的载体在你的x,y,z价值观,也可以使用矩阵 xMat,yMat,zMat来代替.每个矩阵的每列xMat,yMatzMat表示要放置在绘图中的单个迹线.因此,每个xMat信号的每列都进入一列.因此,我为我的值创建了一个向量x,并将它们复制到我们所拥有的信号中.在这种情况下,我们有4个信号.y必须以不同方式播放这些值.您需要确定每个信号之间允许的间距.我选择0.001了每个信号.因此,我已经创建了矩阵,其被存储在yMat,因此,每一列代表任一0,0.001,0.0020.003.这些z值将是您y创建的不同列中的每个信号的值zMat.

你需要使用它来获得正确的间距和每个轴的右边界,但这应该让你开始.祝好运!