我有多个FFT图形,希望将它们放在一个图形中展示,就像附图所示。 我不知道从哪里开始。希望能得到帮助!
plot3
来帮助您进行这种绘图。使用plot3
,您需要将每个图的y
值变为z
值,并且如果您想要分离这些图形,则需要在此3D图中改变y
值。让我们举个例子。比如说我想把四个图放在一个单独的图中,这些图是:
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
plot3
中。 plot3
的工作方式是,您可以将单个向量放入x,y,z
值中,或者您可以使用xMat,yMat,zMat
的矩阵。每个xMat
,yMat
和zMat
矩阵的每一列表示要放置在绘图中的单个跟踪。因此,每个信号的xMat
的每一列都进入一个单独的列。因此,我为我的x
值创建了一个向量,并将它们复制了多次,直到我们有尽可能多的信号。在本例中,我们有4个信号。必须以不同的方式处理y
值。您需要确定可以允许的每个信号之间的间距有多少。我选择了0.001
用于每个信号。因此,我相应地创建了存储在yMat
中的矩阵,每个列分别表示0
,0.001
,0.002
或0.003
。 z
值将是放置在不同列中的每个信号的y
值,我使用zMat
创建了这些值。DZ
控制条纹宽度,设置为Z轴跨度的10%):ZL = zlim(gca);
DZ = 0.1*(ZL(2)-ZL(1));
for k=1:size(xMat,2);
hPatch(k) = patch( ...
[xMat(:,k); flipud(xMat(:,k)) ], ...
[yMat(:,k); flipud(yMat(:,k)) ], ...
[zMat(:,k); flipud(zMat(:,k))-DZ], ...
'w');
set(hPatch(k), 'EdgeColor','none', 'FaceColor','w', 'FaceAlpha',0.9 );
end
axis tight