Function to load a .mat file (which can be inside or outside matlab folder) and perform analysis for finding constant or near-zero variance values

3 views (last 30 days)
I have a matlab data file that has only one variable of type 1x1 struct which has 1x680 cell which has 680 MxN double values (values can be -ve, 0 or +ve). I want to load this data file using a function and find constant and near-zero variance values in this data set.
Thanks in advance.

Accepted Answer

Walter Roberson
Walter Roberson on 4 Feb 2018
[filename, pathname] = uigetfile('*.mat', 'Selected mat file');
if isnumeric(filename); return; end %user cancel
filename = fullfile(pathname, filename);
datastruct = load(filename);
varnames = fieldnames(datastruct);
datacell = datastruct.(varnames{1}); %there should only _be_ one, but just in case there are more
variances = cellfun(@(M) var(M(:)), datacell);
has_small_variance = abs(variances) < 1e-5;
selected_cells = datacell(has_small_variance);
  7 Comments
HT
HT on 7 Feb 2018
Thanks.
Is it possible also to calculate other values, lets say mean of the cells in this code. And for specifying the threshold (variances<some value), is it possible to give control to user for specifying the value.
Walter Roberson
Walter Roberson on 7 Feb 2018
tol = input('What tolerance do you want?');
means = cellfun(@mean2, datacell);
variances = cellfun(@(M) var(M(:)), datacell);
has_small_variance = abs(variances) < tol;
selected_cells = datacell(has_small_variance);
selected_variances = variances(has_small_variance);
selected_means = means(has_small_variance);

Sign in to comment.

More Answers (0)

Categories

Find more on Structures in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!