I am running a for loop on 10 million lines of data and it has taken over a day and is still running. I have preallocated the array I am modifying according to suggestions provided by Matlab for optimizing runtime. This post says 100 million lines of data ran in a simple for loop in 0.2 seconds. I am testing my code both on my personal computer (Mac) and a remote server. Why is my code so slow??
%% read in file cwaFileToRead = '6011549_0000000003.cwa'; ptID = '6011549_0000000003'; sampling_rate = 100; Fs = sampling_rate; output_dir = ''; rawData = CWA_readFile(cwaFileToRead, 'verbose', 0); %% calculate vector magnitude xRaw = rawData.AXES(:,2); yRaw = rawData.AXES(:,3); zRaw = rawData.AXES(:,4); vmRaw = sqrt((xRaw.^2)+(yRaw.^2)+(zRaw.^2)); vmRaw = vmRaw.*(1000); numrows=size(vmRaw); peak=zeros(numrows);%add empty rows for peak identification time = datetime(rawData.AXES(:,1), 'ConvertFrom', 'datenum'); % convert mtime to datetime timedata = timetable(time, xRaw, yRaw, zRaw, vmRaw, peak); % convert data to timetable %% CHECK FOR UNIFORM SAMPLING, RESAMPLE IF NOT UNIFORM % Check if sampling rate is uniform isUniform = isregular(timedata); % If sampling rate is non-uniform, resample at regular sampling intervals if isUniform == 0 timeStep = seconds(1/Fs); % how long between each regular sample regularizedData = retime(timedata,'regular','linear','TimeStep',timeStep); fprintf('Sampling rate is non-uniform, resampling using linear interpolation\n') else regularizedData = timedata; end %FOR LOOP THAT IS SO SLOW!! HELP! tic for row = 2:numrows-1 if regularizedData.vmRaw(row)>regularizedData.vmRaw(row-1)&& regularizedData.vmRaw(row)>regularizedData.vmRaw(row+1) regularizedData.peak(row)=1; else regularizedData.peak(row)=0; end end toc
I don't see why it would be slow, but there's no need for a for loop at all,
regularizedData.peak(2:end-1) = regularizedData.vmRaw(2:end-1)>regularizedData.vmRaw(1:end-2)&... regularizedData.vmRaw(2:end-1)>regularizedData.vmRaw(3:end);
Matlabsolutions.com provides guaranteed satisfaction with a
commitment to complete the work within time. Combined with our meticulous work ethics and extensive domain
experience, We are the ideal partner for all your homework/assignment needs. We pledge to provide 24*7 support
to dissolve all your academic doubts. We are composed of 300+ esteemed Matlab and other experts who have been
empanelled after extensive research and quality check.
Matlabsolutions.com provides undivided attention to each Matlab
assignment order with a methodical approach to solution. Our network span is not restricted to US, UK and Australia rather extends to countries like Singapore, Canada and UAE. Our Matlab assignment help services
include Image Processing Assignments, Electrical Engineering Assignments, Matlab homework help, Matlab Research Paper help, Matlab Simulink help. Get your work
done at the best price in industry.