matlab mat文件怎样读取和怎样调用

matlab mat文件怎样读取和怎样调用,第1张

用命令load
句法有以下几种
load('filename')
load('filename', 'X', 'Y', 'Z')
load('filename', '-regexp', exprlist)
load('-mat', 'filename')
load('-ascii', 'filename')
S = load()
load filename -regexp expr1 expr2
举例:
Example 1 -- Loading From a Binary MAT-fileTo see what is in the MAT-file prior to loading it, use whos -file: whos -file mydatamat
Name Size Bytes Class
javArray 10x1 javalangDouble[][]
spArray 5x5 84 double array (sparse)
strArray 2x5 678 cell array
x 3x2x2 96 double array
y 4x5 1230 cell array
Clear the workspace and load it from MAT-file mydatamat: clear
load mydata
whos
Name Size Bytes Class
javArray 10x1 javalangDouble[][]
spArray 5x5 84 double array (sparse)
strArray 2x5 678 cell array
x 3x2x2 96 double array
y 4x5 1230 cell array
Example 2 -- Loading From an ASCII File Create several 4-columnn matrices and save them to an ASCII file: a = magic(4); b = ones(2, 4) -57; c = [8 6 4 2];
save -ascii mydatadat
Clear the workspace and load it from the file mydatadat If the filename has an extension other than mat, MATLAB assumes that it is ASCII: clear
load mydatadat
MATLAB loads all data from the ASCII file, merges it into a single matrix, and assigns the matrix to a variable named after the filename: mydata
mydata =
160000 20000 30000 130000
50000 110000 100000 80000
90000 70000 60000 120000
40000 140000 150000 10000
-57000 -57000 -57000 -57000
-57000 -57000 -57000 -57000
80000 60000 40000 20000
Example 3 -- Using Regular ExpressionsUsing regular expressions, load from MAT-file mydatamat those variables with names that begin with Mon, Tue, or Wed: load('mydata', '-regexp', '^Mon|^Tue|^Wed');
Here is another way of doing the same thing In this case, there are three separate expression arguments: load('mydata', '-regexp', '^Mon', '^Tue', '^Wed');

1、生成MAT文件
假如你的矩阵A、B都已赋值,现在需要将A、B矩阵保存成mat格式文件,执行如下命令:save matfile1 A B 就会把A B矩阵数据保存在matfile1mat文件中了
eg:>>A=[1 2];
>>B =[3 4];
>>save matfile1 A B; %回车即可将A B保存在matfile1mat文件中了。
如果想要单独保存一个数据,例如A,输入以下指令即可:
>> save matfile2 A;
2、保存所有数据为MAT文件
如果有多个矩阵,我们需要将其全部保存,如果数据量很大,就不一一写下保存了,否则会很麻烦,我们直接用下面命令便可:
save mydata3 %保存以上所有数据
这样就会把当前运行空间所有的变量都保存到mydata3mat文件中了
3、读取mat文件数据
首先是将你想打开的mat文件所在的目录设置为当前工作目录,然后执行如下命令:load mydata,就会将mydata中的所有数据加载到当前工作环境中;
eg:>>load matfile %这样读取的是mat文件中所有的数据
如果想要仅仅读取mat文件中某些特定的数据,那么可以单独调用:load matfile 。
eg: >>load matfile A %这样,A就会被加载到当前工作环境中,而其他的B、C、D都不会被加载。
4、如何设置工作路径
所谓工作路径就是matlab运行时的工作目录,matlab包含很多工具箱,用户在使用时也会产生很多文件,工作路径就是matlab使用这些工具,函数,文件的途径。
41、查看搜索路径:path
在命令窗口中输入path,就能查看matlab的搜索路径(比如,输入一条代码,程序会在这些目录中依次搜索是否为变量,是否为函数,M文件等)。
>> path
42、当前工作目录:cd
输入命令cd,可以查看当前工作目录。
>>cd
43、修改工作路径:userpath('F:\matlab\work')
路径可以自己定义。
>>userpath('F:\matlab\work')
44、保存路径修改:savepath
改完默认路径后需要保存一下。
>>savepath
45、也可以用工具 *** 作:pathtool
在命令窗口中输入pathtool,打开工具,在修改完成后,要保存。

%================================================% 这是存储数据的基本步骤%================================================1将数据存在文件里(可以是写字板,txt文本,Excel或者其他的数据文件)2打开file/Import Data (假设文件名为test)3出现Import Wizard 对话框,点击next,finish4在Matlab的workspace窗口中出现变量名test,右击选save as,将数据以mat存放在你需要的位置以后调用只需在对应的路径下,load testmat或者load('matlab\testmat');此时,程序中将出现test的变量,即数据变量,在程序中直接运用即可,如:

直接用load就可以了,最简单的s=load("文件名"),s是一个矩阵,其任意子结构都可以取到。
在matlab中输入 help load,就能看到其使用帮助。
S = LOAD() returns the contents of FILENAME in variable S If
FILENAME is a MAT file, S is a struct containing fields matching the
variables retrieved
Examples for pattern matching:
load fname a % Load variables starting with "a"
load fname -regexp ^b\d{3}$ % Load variables starting with "b" and
% followed by 3 digits
load fname -regexp \d % Load variables containing any digits

matlab中读取mat文件和dat文件,dat文件运行速度更快。
Matlab MAT-文件 mat数据格式是matlab的数据存储的标准格式。mat文件是标准的二进制文件,还可以ASCII码形式保存和加载。
MATLAB是解释型语言,就是说MATLAB命令行中敲入的命令在当前MATLAB进程中被解释运行。但是,每次执行一个任务时敲入长长的命令序列是很烦人的。有两种方法可以使MATLAB的力量得到扩展——脚本和函数。这两种方法都用像emacs一样的文本编辑器中编写的m文件(因为扩展名是m所以这样命名,m文件还称点m文件)。m文件的好处在于它可以保存命令,还可以轻易地修改命令而无需重新敲入整个命令行。
DAT并不是一种标准文件。许多软件都使用这个扩展名,但文件含义不同。而许多数据分析软件也用这个扩展名保存数据。所以这要看具体的软件情况来定。DAT文件,可以按照扩展名来看就是DATA的意思,即数据文件,这类文件并没有进行绝对化的定义,例如VCD光盘中的DAT文件就可以用一般的视频播放器打开,而QQ的DAT文件中则存储了用户信息,是无法使用常规方式打开的,只有QQ程序可以访问。还有一些其他程序都有自己对DAT文件的定义,要通过其特殊的程序来打开与之相关联的DAT文件。

1、读取同一路径下所有txt文件的程序:
function data = readall_txt(path)
% READALL_TXT 读取所有文件
% DATA = READALL_TXT(PATH)读取路径PATH下的所有txt文件中的数据赋给data
% txt文件中含有一个数据项
% 输出cell格式以免各txt中数据长度不同
A = dir(fullfile(path,'txt'));
% 读取后A的格式为
% name -- filename
% date -- modification date
% bytes -- number of bytes allocated to the file
% isdir -- 1 if name is a directory and 0 if not
A = struct2cell(A);
num = size(A);
for k =0:num(2)-1
x(k+1) = A(4k+1);% 找出name序列
end
for k = 1:num(2)
newpath = strcat(path,'\',x(k));
data{k} = load(char(newpath));
end
% [EOF] readall_txtm
2、读取所有路径下所有mat文件的程序:
function data = read_mat(path)
% READ_MAT 读取所有文件
% DATA = READ_MAT(PATH)读取路径PATH下的所有mat文件中的数据赋给data
% 前提是每个MAT文件只含有一个变量,如果含有多个,则使用READ_MAT
% 输出cell格式以免各mat中数据长度不同
% 输出data后,如要使用请用格式data{index}访问各数据项
A = dir(fullfile(path,'mat'));
% 读取后A的格式为
% name -- filename
% date -- modification date
% bytes -- number of bytes allocated to the file
% isdir -- 1 if name is a directory and 0 if not
A = struct2cell(A);
num = size(A);
for k =0:num(2)-1
x(k+1) = A(4k+1);% 找出name序列,x存储内容为mat
end
for k = 1:num(2)
newpath = strcat(path,'\',x(k));
temp = load(char(newpath));
matname = char(fieldnames(temp));% 获取结构成员名称
data{k} = getfield(temp,matname);% 获取该名称下的成员内容
end
% [EOF] read_matm


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13105881.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-30
下一篇 2023-05-30

发表评论

登录后才能评论

评论列表(0条)

保存