Hello community,
I want to use the MATFILE command to access specific data in .mat-files. Is there a function which returns true if the .mat-file format is 'v7.3' and false otherwise?
I know you can check this in the command window using
type myfile.mat
However you cannot use TYPE within a function, which is what I want to do.
Thanks in advance
David

 採用された回答

Daniel Shub
Daniel Shub 2012 年 8 月 30 日

1 投票

You can use evalc to capture the output of type
function tf = getmatv(fname)
x = evalc(['type(''', fname, ''')']);
tf = strcmp(x(2:20), 'MATLAB 7.3 MAT-file');
end

4 件のコメント

David T_
David T_ 2012 年 8 月 30 日
Yep... forgot about EVALC
Thanks
Tom
Tom 2012 年 8 月 30 日
I'd have thought there'd be an easier way to determine it? You can also do it through fscanf
fname='myfile.mat';
fclose('all')
[fid,e]=fopen(fname);
S=fscanf(fid,'%c');
fclose(fid)
S(1:regexp(S,',','once')-1)
but it still seems overly complicated.
Daniel Shub
Daniel Shub 2012 年 8 月 30 日
I was really answering the "you cannot use TYPE within a function" part of the question. I am not sure you want to use TYPE, but I wanted to provide a way to do it.
Walter Roberson
Walter Roberson 2017 年 8 月 23 日
You can also use fileread() to pull in the entire file, and then examine the first few characters of it.

サインインしてコメントする。

その他の回答 (1 件)

Tom
Tom 2012 年 8 月 30 日

2 投票

type(FileName)
should work fine, where FileName is a string containing the file name, e.g.
FileName='myfile.mat'

製品

Community Treasure Hunt

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

Start Hunting!

Translated by