diff --git a/PlottingTool.mlapp b/PlottingTool.mlapp index 3c37f9a..ee1ea30 100644 Binary files a/PlottingTool.mlapp and b/PlottingTool.mlapp differ diff --git a/README.md b/README.md index 698aaec..b391b76 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ This is an attempt to standardize data plotting in Space Team Aachen, or at leas Currently, the plotting tool covers the following functionalities: -- Process "tdms" and "csv" files +- Process "tdms", "csv" and "txt" files - Process multiple files at once - generate time values with increment - Automatically creates a folder-structure for the results @@ -114,14 +114,8 @@ One last disclaimer: If there is a mistake in the data set, if you use a comma i There are numerous functionalities still missing. The following list provides an overview of all important functions, that should be added as soon as possible (more or less). The order of precedence represents the priority. -1. Support the file format TXT -2. Merge plots (more than one data set in a single plot) – Maybe another tool for that? -3. Select/ Unselect all checkboxes in one column with a button -4. “Set all” button for start and end time -5. Choose the order of the move mean filter -6. Add a custom x-axis label -7. Add the option for a derivation plot -8. Allow multiple loads (Load different folder in one session) -9. Add try and catch statements around every user input +1. Merge plots (more than one data set in a single plot) – Maybe another tool for that? +2. Get the custom x-Axis label to work on the fourier plot +3. Add try and catch statements around every user input You are very welcome to help develop this tool further. If you are planning to do so, please send me a message (Max Heckmann) and I give you a short introduction in the already existing code. This probably saves you some time. \ No newline at end of file diff --git a/diffPlotFnc.m b/diffPlotFnc.m new file mode 100644 index 0000000..7661601 --- /dev/null +++ b/diffPlotFnc.m @@ -0,0 +1,67 @@ +function diffPlotFnc(data, fileSettings, checkboxes, start, stop, yAxis, xAxis, channels, path) + + %Iterate through all channels + for channel = 1:width(data) + + %If Graph is checked + if checkboxes{channel}.Value == 1 + + %Convert start and ending time + beginning = str2double(start{channel}.Value); + ending = str2double(stop{channel}.Value); + + %if first row increment is not checked + if fileSettings{2}.Value == 0 + [timeArray, yData] = timeAxisWithIncrement(data, fileSettings{3}.Value, beginning, ending, channel); + else + if ending == 0 + timeArray = data(:,1); + yData = data(:, channel); + else + + timeIndex = 1; + while data(timeIndex,1) < str2double(start{channel}.Value) + timeIndex = timeIndex + 1; + end + + startIndex = timeIndex; + + while data(timeIndex, 1) <= str2double(stop{channel}.Value) || timeIndex >= length(data) + timeArray(timeIndex - startIndex + 1) = data(timeIndex,1); + timeIndex = timeIndex + 1; + end + + endIndex = timeIndex; + + for timeIndex = startIndex:endIndex - 1 + yData(timeIndex - startIndex + 1) = data(timeIndex, channel); + end + end + end + + %Plot the channel + figure(channel) + plot(timeArray, yData, '-b'); + hold all + + %shorten time array to match lost value from diff + timeArray(end) = []; + + plot(timeArray, diff(yData), '-r'); + ylabel(yAxis{channel}.Value); + xlabel(xAxis{channel}.Value); + legend('Original', 'Derivative') + title(channels{channel}); + + %Save plot + saveFigs('derivative', figure(channel), channels(channel), path, fileSettings{1}.Value) + + %reset + hold off + close all; + + end + + end +end + diff --git a/fourierPlotFnc.m b/fourierPlotFnc.m index 8e253b6..795b630 100644 --- a/fourierPlotFnc.m +++ b/fourierPlotFnc.m @@ -1,4 +1,4 @@ -function fourierPlotFnc(data, fileSettings, checkboxes, start, stop, yAxis, channels, path) +function fourierPlotFnc(data, fileSettings, checkboxes, start, stop, yAxis, xAxis, channels, path) %Iterate through all channels for channel = 1:width(data) @@ -47,7 +47,7 @@ function fourierPlotFnc(data, fileSettings, checkboxes, start, stop, yAxis, chan Nspec = 1024; end wspec = hamming(Nspec); - Noverlap = Nspec/2; + Noverlap = int16(Nspec/2); hold on figure(channel) diff --git a/graphPlotFnc.m b/graphPlotFnc.m index 57d6ecf..db44e8b 100644 --- a/graphPlotFnc.m +++ b/graphPlotFnc.m @@ -1,4 +1,4 @@ -function graphPlotFnc(data, fileSettings, checkboxes, start, stop, yAxis, channels, path) +function graphPlotFnc(data, fileSettings, checkboxes, start, stop, yAxis, xAxis, channels, path) %Iterate through all channels for channel = 1:width(data) @@ -46,7 +46,7 @@ function graphPlotFnc(data, fileSettings, checkboxes, start, stop, yAxis, channe figure(channel) plot(timeArray, yData); ylabel(yAxis{channel}.Value); - xlabel('Time [s]'); + xlabel(xAxis{channel}.Value); title(channels{channel}); %Save plot diff --git a/meanPlotFnc.m b/meanPlotFnc.m index eaf28c9..a22ccdf 100644 --- a/meanPlotFnc.m +++ b/meanPlotFnc.m @@ -1,4 +1,4 @@ -function meanPlotFnc(data, fileSettings, checkboxes, start, stop, yAxis, channels, path) +function meanPlotFnc(data, fileSettings, checkboxes, start, stop, yAxis, xAxis, channels, path, order) %Iterate through all channels for channel = 1:width(data) @@ -39,15 +39,14 @@ function meanPlotFnc(data, fileSettings, checkboxes, start, stop, yAxis, channel end end - %Plot the channel figure(channel) plot(timeArray, yData, '-b'); hold all - plot(timeArray, movmean(yData, 20), '-r'); + plot(timeArray, movmean(yData, str2double(order)), '-r'); ylabel(yAxis{channel}.Value); - xlabel('Time [s]'); - legend('Without movmean','With movmean (20th order)') + xlabel(xAxis{channel}.Value); + legend('Without movmean', strcat('With movmean (', order, 'th order)')) title(channels{channel}); %Save plot