Effacer les filtres
Effacer les filtres

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

1 vue (au cours des 30 derniers jours)
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.

Réponse acceptée

Walter Roberson
Walter Roberson le 4 Fév 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 commentaires
HT
HT le 7 Fév 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 le 7 Fév 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);

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Vector Autoregression Models dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by