绘制为曲面时,周期性数据似乎没有周期性

Periodic data doesn't seem periodic when plotted as a surface

我正在模拟波入射到多层球体上的问题。

我有一个名为 forceZ1 的变量,它是另外两个名为 phasefrequency 的变量的函数。我求解了一个方程并找到了 forceZ1 的矩阵。我也知道 frequency 是一个 1*3000 矩阵, phase 大小相同。所以显然 forceZ1 将是 3000*3000.

在这种情况下,相位在 02*pi 之间变化,根据数据,我得到力应该是周期性的,周期为 2π。这可以通过绘制 forceZ1 中关于角度的任何列向量来验证,例如

figure(); plot(ang1, forceZ1(:,567));

给出:

我尝试绘制一个表面 forceZ1frequencyphase,但图中没有显示周期性行为。我做错了什么?

这是我的绘图代码:

Z=forceZ1;
X=ang1;
Y=frequency;

figure
surf(X,Y,Z,'edgecolor','none')
shading interp
view(3)
xlim([0,2*pi]);
xlabel('X=phase')
ylabel('Y=nondimensional frequency')
zlabel('Z=force in Z direction')
title('Force-Frequency-Phase')
colormap jet

我上传了一个.mat file of my data供大家参考。

您的 forceZ1 矩阵似乎在某个地方被转置了。正如你所说,数据确实是周期性的,但是周期性的方向是你的Y轴。

如果您像这样绘制数据,它将开始变得有意义:

surf(X,Y,Z.','edgecolor','none');

...导致:

但是,由于您的数据包含相位、幅度和偏移量不同的谐波,您可能想尝试使用不同类型的图表来突出谐波的形状,例如 ribbon:

figure(); ribbon(Z(1:40:end,1:100:end));

...或尝试制作动画,或使用显示频率的滑块制作交互式图表。

此外,您的数据可能不仅被转置,而且还被翻转,因此您可能需要使用 flip 才能获得正确的结果。