MATLAB,将 4049 行 x 50 列的光谱仪数据转换为 3D 图

MATLAB, Convert 4049 rows x 50 columns of spectrograph data into 3D plot

%Sampling Frequency
f=8000;

%Sampling Time
t=5;
%Data imported from microsoft Excel
matrix=Book2S1;

%Size Matrix
s=size(matrix);
h=s(1,1);
w=s(1,2);

%Set Up Rows and Columns
rows=(0:(f/2)/(h-1):f/2);
columns=(0:t/(w-1):t);

%plot
mesh(columns,rows,matrix);
xlabel('Time, s')
ylabel('Frequency, Hz')
zlabel('Power Spectral Density, V^2/Hz')`enter code here

这是我为尝试获取 3D 图而输入的代码。我的目标是获得如下图所示的图,但我继续收到网格错误

使用网格时出错(第 139 行) 数据输入必须是数字、日期时间、持续时间、分类数组或可以转换为的对象 双.

Lab_3_1 中的错误(第 21 行) 网格(列、行、矩阵);

What my plot is supposed to look like. 图片裁剪后不想保存,对不起大家。

以下是用于该图的一半数据的link。 https://docs.google.com/spreadsheets/d/e/2PACX-1vRMWfmFYDnwMSPzahD8k-aWAXHstbNRdlY4gmOHJoXkLaBb4PY7zF5-41yFkQHR4g0w3LrMFiz3ZqWJ/pubhtml

尝试用你的 4049x50 矩阵替换我的随机矩阵 f:

% t=5;
% fs = 8000;
lower = -60;
upper = 20;
f = (upper-lower).*rand(4049,50) + lower;
% s=size(f);
% h=s(1,1);
% w=s(1,2);
% rows=(0:(fs/2)/(h-1):fs/2);
% columns=(0:t/(w-1):t);
mesh(f);
colormap('jet');
colorbar;
xlabel('Time, s')
ylabel('Frequency, Hz')
zlabel('Power Spectral Density V^2/Hz')
ylim([0 4000])
zlim([-100 40])

使用随机数据矩阵 f,我得到:

我发现导入到 MATLAB 中的值被转换为字符串值。我停止使用导入按钮,而是使用 xlsread 函数,这样我就可以导入数值,而无需将它们转换为字符串。

Finished Code

Resulting 3D Plot

谢谢大家的帮助和查看问题。