Matlab 使用多个excel文件进行曲面打印
我只是MATLAB的初学者 我需要使用3D绘图来表示我的数据。我尝试使用冲浪功能,但在我的情况下,这是有点棘手。从代码中,您将看到我在多个excel文件中循环以从中提取数据。 使用三维绘图,我需要将Fv数组表示为“X”坐标,FTsiga表示为“Y”坐标,第三个坐标应为我循环使用的每个excel文件。 (Fv,FTsiga)的曲线图与随附的图类似。 到目前为止,我编写的代码似乎无法执行,因为MATLAB由于内存不足或陷入循环而崩溃。我想后者更有可能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 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绘图。我认为我的代码的逻辑中有一个错误,但我无法找出它。所以现在你不知道它们是逻辑错误还是内存不足造成的问题。因此,开始调试。移除循环并对单个示例文件运行它,该文件的测量次数较少,您可以验证结果。使用断点或逐行运行,检查每行是否获得预期的输出。当你处理完一个文件后,就开始循环