matlab,怎样读取多个mat文件再保存为一整个矩阵mat文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab,怎样读取多个mat文件再保存为一整个矩阵mat文件?相关的知识,希望对你有一定的参考价值。

如图,X1--X20.mat都是只有一列的矩阵(M*1),想把他们一列一列顺序组合成一个大矩阵(M*20)也保存为一个mat文件,代码怎么写?谢谢

参考技术A for ii=1:1:20
Filepath=['C:\Users\...'];%文件路径
FileName=[' Filepath','\X',num2str(ii),'.mat'];
a=importdata(FileName);
data(:,ii)=a;
end
Filedata=[Filepath,'\data.mat'];
save(Filedata,'data');追问

您好,我运行出来有问题,是这个样子(250就是原问题里的20,我的数量变了而已)

追答

那说明你原始.mat文件格式是struct格式,将data(:,ii)=a;这句调整一下,让a变成double形式的行向量即可

追问

我原始就是double类型的列矩阵,不知道是不是跟我保存文件有关,

  filename1=strcat('X',num2str(isum),'.mat')

        save(filename1,'X')

我是这样存的,isum就是运行次数,每一次的X数据是不一样的,文件名是X1到X250,但是我每一个点开还是叫X,不知道是否我保存文件有问题

追答

跟你怎么存的没关系
a=importdata(FileName);
这句导入之后,看a是否为struct类型,如果是,再令a=a.data试试

追问

请问a=a.data应该加在哪里?而且感觉只提取出了第250列数据

还没解决,已私信

本回答被提问者和网友采纳

matlab中如何读取mat文件的矩阵

matlab中如何读取mat文件的矩阵

1、生成MAT文件
假如你的矩阵A、B都已赋值,现在需要将A、B矩阵保存成mat格式文件,执行如下命令:save matfile1 A B 就会把A B矩阵数据保存在matfile1.mat文件中了
eg:>>A=[1 2];
>>B =[3 4];
>>save matfile1 A B; %回车即可将A B保存在matfile1.mat文件中了。
如果想要单独保存一个数据,例如A,输入以下指令即可:
>> save matfile2 A;
2、保存所有数据为MAT文件
如果有多个矩阵,我们需要将其全部保存,如果数据量很大,就不一一写下保存了,否则会很麻烦,我们直接用下面命令便可:
save mydata3 %保存以上所有数据
这样就会把当前运行空间所有的变量都保存到mydata3.mat文件中了
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使用这些工具,函数,文件的途径。
4.1、查看搜索路径:path
在命令窗口中输入path,就能查看matlab的搜索路径(比如,输入一条代码,程序会在这些目录中依次搜索是否为变量,是否为函数,M文件等)。
>> path
4.2、当前工作目录:cd
输入命令cd,可以查看当前工作目录。
>>cd
4.3、修改工作路径:userpath('F:\matlab\work')
路径可以自己定义。
>>userpath('F:\matlab\work')
4.4、保存路径修改:savepath
改完默认路径后需要保存一下。
>>savepath
4.5、也可以用工具操作:pathtool
在命令窗口中输入pathtool,打开工具,在修改完成后,要保存。
参考技术A 1,最好用高版本的matlab(6.5的是不行的),建议用10版的或者更高的。
2,mat文件的读取可以直接利用load('文件名.mat')
3,在Curentfolder里面双击你要查看的mat文件结果就会在workspace显示,然后在workspace 里面双击某个变量就可以对其进行编辑。(workspace和Curentfolder可以这样打开单击菜单栏的Desktop--workspace,Desktop--Curentfolder)
4,利用save命令对你的mat文件进行保存,当然如果你是安3来修改的也就不用再使用save命令了。
参考技术B S = load(filename, '-mat', variables)

参考资料:http://www.mathworks.com/access/helpdesk/help/techdoc/ref/load.html

参考技术C 用命令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 mydata.mat
Name Size Bytes Class

javArray 10x1 java.lang.Double[][]
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 mydata.mat: clear
load mydata

whos
Name Size Bytes Class

javArray 10x1 java.lang.Double[][]
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) * -5.7; c = [8 6 4 2];
save -ascii mydata.dat
Clear the workspace and load it from the file mydata.dat. If the filename has an extension other than .mat, MATLAB assumes that it is ASCII: clear
load mydata.dat
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 =
16.0000 2.0000 3.0000 13.0000
5.0000 11.0000 10.0000 8.0000
9.0000 7.0000 6.0000 12.0000
4.0000 14.0000 15.0000 1.0000
-5.7000 -5.7000 -5.7000 -5.7000
-5.7000 -5.7000 -5.7000 -5.7000
8.0000 6.0000 4.0000 2.0000
Example 3 -- Using Regular ExpressionsUsing regular expressions, load from MAT-file mydata.mat 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');本回答被提问者采纳

以上是关于matlab,怎样读取多个mat文件再保存为一整个矩阵mat文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何读写Matlab的mat文件?

matlab中如何读取mat文件的矩阵

matlab 存储mat文件

matlab如何批量读取mat文件中的矩阵?

matlab中mat文件的生成和读取

matlab读取.mat文件中的指定数据