Changing the format of mat file

6 views (last 30 days)
How to change the format of the mat file ? My data is in form of : epoch *data point *channel. I want to change the format as : channel* data point* epoch

Accepted Answer

Mohammad Sami
Mohammad Sami on 15 Jul 2020
If you have a 3D matrix, you can use the function permute to move the dimensions.
edc = rand([3 4 5]);
cde = permute(edc,[3 2 1]);
% this will make the 3rd dimension the first dimension and first dimension the third.
  1 Comment
Walter Roberson
Walter Roberson on 15 Jul 2020
Note that this works on a variable. You had asked to convert a file; the framework I gave goes through the file and converts all of the variables in it and creates a new file with the result.

Sign in to comment.

More Answers (1)

Walter Roberson
Walter Roberson on 15 Jul 2020
outdir = 'swapped'; %can be fully qualified
filename = 'YourFile.mat'; %can be fully qualified
if ~exist(outdir, 'dir'); mkdir(outdir); end
ds = load(filename);
fn = fieldnames(ds);
nf = length(fn);
all_3d = true;
for K = 1 : nf
thisfield = fn{k};
thisdata = ds.(thisfield);
if ndims(thisdata) ~= 3
fprintf('variable "%s" is not 3D, quitting!\n', thisfield);
all_3d = false;
break;
end
end
if all_3d
nf = struct();
for K = 1 : nf
thisfield = fn{k};
thisdata = ds.(thisfield);
newdata = permute(thisdata, [3 2 1]);
nf.(thisfield) = newdata;
end
[filedir, basename, ext] = fileparts(filename);
newname = fullfile(outdir, [basename ext]);
save(newname, '-struct'. 'nf')
end

Tags

Community Treasure Hunt

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

Start Hunting!