Matlab 使用多个excel文件进行曲面打印

Matlab 使用多个excel文件进行曲面打印,matlab,plot,graphics,3d,Matlab,Plot,Graphics,3d,我只是MATLAB的初学者 我需要使用3D绘图来表示我的数据。我尝试使用冲浪功能,但在我的情况下,这是有点棘手。从代码中,您将看到我在多个excel文件中循环以从中提取数据。 使用三维绘图,我需要将Fv数组表示为“X”坐标,FTsiga表示为“Y”坐标,第三个坐标应为我循环使用的每个excel文件。 (Fv,FTsiga)的曲线图与随附的图类似。 到目前为止,我编写的代码似乎无法执行,因为MATLAB由于内存不足或陷入循环而崩溃。我想后者更有可能 % Matlab trial code

我只是MATLAB的初学者

我需要使用3D绘图来表示我的数据。我尝试使用冲浪功能,但在我的情况下,这是有点棘手。从代码中,您将看到我在多个excel文件中循环以从中提取数据。 使用三维绘图,我需要将Fv数组表示为“X”坐标,FTsiga表示为“Y”坐标,第三个坐标应为我循环使用的每个excel文件。 (Fv,FTsiga)的曲线图与随附的图类似。

到目前为止,我编写的代码似乎无法执行,因为MATLAB由于内存不足或陷入循环而崩溃。我想后者更有可能

    % Matlab trial code: Trying to loop through excel files strored in directory

source_dir = 'C:\UTwente\Q4\Structural Health and Condition monitoring\Case Roadbridge (Zwartewaterbrug)\Excel data'
source_files = dir(fullfile(source_dir, '*xlsx'));
len = length(source_files);
matrix = zeros(len,32);

X = zeros(len,32); Y = zeros(len,32); Z = zeros(len,32);
%looping through excel file in directory
for i=1:len
    data= xlsread(source_files(i).name,'Measurement data');
    for j=1:32
        sig = data(:,j);
        sig = sig - mean(sig);                                      % Remove d-c Offset
        L = length(sig);
        Fs = 1000;                                                  % Sampling Frequency
        Fn = Fs/2;                                                  % Nyquist Frequency
        FTsig = fft(sig)/L;
        Fv = linspace(0, 1, fix(length(FTsig)/2)+1)*Fn;             % Frequency Vector
        Iv = 1:length(Fv);                                          % Index Vector
        FTsiga = double(abs(FTsig(Iv))*2);                          % Truncate, Magnitude, Convert To Double
        sgf_sm = sgolayfilt(FTsiga, 5, 501);                        % Create ‘sgolayfilt’ Filtered FFT
        [~, idx] = max( sgf_sm );                                   % Getting the value of the modal frequency
        peakfreq = Fv( idx );
        matrix(i,j) = peakfreq;                                     % Matrix of all peak frequencies
        [X,Y,Z] = meshgrid(Fv,FTsiga,i);
    end
    surf(Fv,FTsiga,i);
end

你有多少内存,你的代码需要多少内存?您收到了什么错误消息?如果减少每个excel文件中的测量数据并尝试使用较少的文件,代码是否正常工作?您没有提供足够的信息,无法简单地解释您的问题。我需要绘制多个2D绘图以形成3D绘图。我认为我的代码的逻辑中有一个错误,但我无法找出它。所以现在你不知道它们是逻辑错误还是内存不足造成的问题。因此,开始调试。移除循环并对单个示例文件运行它,该文件的测量次数较少,您可以验证结果。使用断点或逐行运行,检查每行是否获得预期的输出。当你处理完一个文件后,就开始循环