Why is my code identifies only few peaks?

Hello there,
I have a code that generates graph of two column vectors by plotting the peak values. The code works well except for a case where if i add mean to center my axis,it is plotting only first one or 2 peaks for the files. However, if i take off the the code in brackets which is to find mean ( a1 = XDATA - mean (XDATA); plot(TIMESTEPS, a1); ) the code works well identifying all the peaks. Can anyone help me out with this?
>> %BATCH MODE
files = dir('C:\Users\Deakin Uni\Documents\MATLAB\a\*.xlsx');
fNames = {'90','110','150'};
%for each file
for k= 1: length(fNames)
% extract file names
fName = ['C:\Users\Deakin Uni\Documents\MATLAB\a\', fNames{k}];
[XDATA, TIMESTEPS] = importfile(fName);
a1 = XDATA - mean (XDATA);
plot(TIMESTEPS, a1);
[peakvals,peaklocs] = findpeaks(a1, 'minpeakdistance',50, 'minpeakheight', 0.00001);
peaktime = TIMESTEPS(peaklocs);
createfigure4(TIMESTEPS, a1, peaktime, peakvals)
saveas(gcf,sprintf('chaitu%d.png',k));
end
Looking for a quick answer
Thanks in advance

 Accepted Answer

you probably should also subtract the mean from the value you passed to 'minpeakheight' if you want it to track the data.

4 Comments

I tried using the below code and it work. Any more suggestions?
%BATCH MODE
files = dir('C:\Users\Deakin Uni\Documents\MATLAB\a\*.xlsx');
fNames = {'90','110','150'};
%for each file
for k= 1: length(fNames)
% extract file names
fName = ['C:\Users\Deakin Uni\Documents\MATLAB\a\', fNames{k}];
[XDATA, TIMESTEPS] = importfile(fName);
a1 = XDATA - mean (XDATA);
plot(TIMESTEPS, a1);
[peakvals,peaklocs] = findpeaks(a1, 'minpeakdistance',50, 'minpeakheight', mean (XDATA)-0.001);
peaktime = TIMESTEPS(peaklocs);
createfigure4(TIMESTEPS, a1, peaktime, peakvals)
saveas(gcf,sprintf('chaitu%d.png',k));
%exporting to a data file
newdata = [TIMESTEPS,XDATA];
csvwrite('www%d.dat',k,newdata)
end
Glad it worked for you.
Also, do you know how can i run the csvwrite command in a loop. I have used the one mentioned above. It doesn't work. Any suggestions?
Probably best to ask a separate question for that (include what you tried and what's not working well). I've used xlsread and xlswrite but I'm not trying to write streamed output like you are.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!