Changing the format of mat file
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Khan Muhammad Adeel Khan
el 15 de Jul. de 2020
Comentada: Walter Roberson
el 15 de Jul. de 2020
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
0 comentarios
Respuesta aceptada
Mohammad Sami
el 15 de Jul. de 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 comentario
Walter Roberson
el 15 de Jul. de 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.
Más respuestas (1)
Walter Roberson
el 15 de Jul. de 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
0 comentarios
Ver también
Categorías
Más información sobre Large Files and Big Data en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!