Changing the format of mat file
2 ビュー (過去 30 日間)
古いコメントを表示
Khan Muhammad Adeel Khan
2020 年 7 月 15 日
コメント済み: Walter Roberson
2020 年 7 月 15 日
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 件のコメント
採用された回答
Mohammad Sami
2020 年 7 月 15 日
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 件のコメント
Walter Roberson
2020 年 7 月 15 日
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.
その他の回答 (1 件)
Walter Roberson
2020 年 7 月 15 日
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 件のコメント
参考
カテゴリ
Help Center および File Exchange で Large Files and Big Data についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!