转载,源地址:http://blog.sina.com.cn/s/blog_4c0cc1150100qbbr.html
matlab中的save与load函数
用save函数,可以将工作空间的变量保存成txt文件或mat文件等.
比如: save peng.mat p j
就是将工作空间中的p和j变量保存在peng.mat中.
用load函数,可以将数据读入到matlab的工作空间中.
比如:load peng.mat
就是将peng.mat中的所有变量读入matlab工作空间中,当然我们也可以选择读入哪个变量.具体见帮助文件.
还有一个问题是在mat文件中保存一个变量,默认读入matlab中后,还是保存时用的名字,
但是,想用一个新名字代替,怎么办?
具体用程序描述如下:
save peng.mat p
那么load peng.mat之后,就可以在工作空间中看到p变量了.可是,如果用load读入之后,我不想用变量名p了,怎么办?
具体解决办法:
s=load('peng.mat');
sc=struct2cell(s);
t=cell2mat(sc);
那么,读入的struct类型变量就被转换成cell类型数据,然后再转换为double类型的数据.
save XXX;
是将当前文件中的全部变量存起来,得到一个名为XXX.mat的文件。
如果只想保存当前文件中的某个或某几个变量,则用:
save('filename','var1','var2',...);
由于通常当前文件中只有很少几个结论性的变量需要保存,所以为了清晰,不妨一个变量保存一个.mat文件,并且文件名就用变量名,如:
save('var1.mat',var1);
save('var2.mat',var2);
--
用load('XXX.mat');
可以将以前已保存的XXX.mat文件加载到当前文件中,并使用其中的变量。
但可能存在如下问题:
如果XXX.mat中有与当前文件中同名的变量var,那么载入的变量将覆盖原有变量。
解决办法是,用
XXX_ld=load('XXX.mat');
取代上面语句,这样就只引入一个XXX_ld结构体。而XXX.mat中保存的所有变量都作为XXX_ld的属性,因此不会发生覆盖。于是,可以用XXX_ld.var来使用变量var,或者为其改名:
var2=XXX_ld.var;
尽管这样增加了一次拷贝,但换来了安全性。