在利用MATLAB进行数据处理和科研学习的时候经常需要将数据保存下来,软件本身有几种保存方式。由于经常忘记,所以这里总结和整理下来,一是提醒自己,二是若能对他人有一丁点帮助,那也是极好的。
1主要的几种保存数据的方式
11 CTR+S
这个保存方式在word等软件中经常使用,在MATLAB中也不例外。该方式也是一种快捷键组合,其作用和通过菜单栏的保存选项一致。这种保存方式我在两个场景中会用到。
111 保存代码
当我们正在写代码时,鼠标光标位于编辑区(就是写代码的窗口),按下CTR+S则会保存代码。这是在写代码是最常用的 *** 作,一定要保存好代码。
112 保存工作区数据
当我们运行完数据,如果我们把光标放到“当前路径”、“命令窗口”、“工作空间”这三个地方时,如果我们按下CTR+S,MATLAB则会保存我们刚刚经过运行产生的在“工作空间”的所有数据,保存后会生成一个“mat”文件,其中包括在“工作空间”出现的所有数据。
此外,当我们进行图像化显示,产生一个figure窗口的时候,将光标放在figure窗口,按下CTR+S,则会触发保存该figure窗口的指令。
12 save 和save as
121 save
save命令应该是保存数据比较常用的一种方式。其语法在MATLAB帮助文档中有这样一些描述:
save(filename)
save(filename,variables)
save(filename,variables,fmt)
save(filename,variables,version)
save(filename,variables,version,‘-nocompression’)
save(filename,variables,‘-append’)
save(filename,variables,‘-append’,‘-nocompression’)
save filename
注:
save(filename):这种方式和上述提到的在“当前路径”、“命令窗口”、“工作空间”这三个地方按CTR+S产生的效果一致,均是保存在工作空间的所有数据变量。
save(filename,variables):这种方式相对于前一个语句的保存针对性更强一些,可以将variables所代表的数据(不论什么格式)保存成“mat”的格式。
其中save(filename,variables,fmt)这种格式是我最常用的一种方式,这种方式可以将我们经过运行产生在“工作空间”中某个变量的数据保存成我们想要的格式。
122 saveas 和 savefig
save as语句主要用于对产生的figure图窗进行保存。
saveas(fig,filename)
saveas(fig,filename,formattype)
举一个MATLAB帮助文档的例子:
x = [2 4 7 2 4 5 2 5 1 4];
bar(x);
saveas(gcf,‘Barchartpng’)
提到saveas,还要提到一个语句就是savefig。它有这样一些语法:
savefig(filename)
savefig(H,filename)
savefig(H,filename,‘compact’)
这个语句也是针对图窗的保存,可以将多个图窗保存在一个文件里面,例如帮助文档里面的示例:
h(1) = figure;
z = peaks;
surf(z)
h(2) = figure;
plot(z)
savefig(h,‘TwoFiguresFilefig’)
close(h)
如果要打开保存的两个图窗,则需要利用openfig的 *** 作。
figs = openfig(‘TwoFiguresFilefig’);
这个功能和在fig图像的菜单栏点击文件(File)->保存(save)或者保存为(save as)的功能是一致的。我一般会选择在图窗点击保存。
13 imwrite写数据
做图像处理经常会用到这个保存的 *** 作,imwrite的功能就是将指定的图像数据写入到指定的文件,它的语法有这样几种形式:
imwrite(A,filename)
imwrite(A,map,filename)
imwrite(,fmt)
imwrite(,Name,Value)
这个 *** 作很简单,但是很常用。不仅可以写入普通的图像数据,还能将多个图像写入一个TIFF文件,也可以将多个图像文件连续显示以生成一个GIF动画。
保存普通数据的例子:
A = rand(50);
imwrite(A,‘myGraypng’)
2总结
本文主要总结了几种在MATLAB中经常用到的保存数据的语句,主要包括CTR+S,save,saveas,savefig,imwrite。
记录在此主要用于自己查找,以及可能为别人带来一点便利。
3引用
[1] MATLAB R2020a,帮助文档。
用matlab实现数据采集的方法
我们在这里介绍两种共同学习参考。
① 直接利用MATLAB数据采集箱中提供的的函数命令进行采集,即wavrecord 。wavrecord是利用Windows 音频输入设备记录声音, 其调用格式为: y=wavrecord(n ,fs ,ch ,dtype) ;
式中n 为采样的点数,决定了录音长度;
fs为采样频率,默认值为11025Hz,还可根据要求自己选择合适的采样率;
ch为声道数,默认值为1,表示单声道,如果指定为2,则采样为双声道立体声数据;
dtype为采样数据的存储格式,用字符串指定,可以是‘double’、‘single’、‘int16’、‘int8’,指定存储格式的同时也就规定了每个采样值量化的精度,int8 对应8 位精度采样,其它都是16 位采样精度。 在我们的实验中参数这样选择:
n=1024 fs=44100 ch=1
dtype=’double’
② 采用对声卡产生一个模拟输入对象的方式进行采集。数据采集过程可以分为四步:
1) 初始化。Matlab将声卡等设备都作对象处理,其后的一切 *** 作都不与硬件直相关,而是通过对该对象的 *** 作来作用于硬件设备,所以首先要对声卡产生一个模拟输入对象:
ai = analoginput (’winsound’) ai ——Matlab 中的变量,它是一个模拟输入设备对象句柄,所有的数据采集过程都是通过对该句柄的 *** 作来实现;
analoginput ( ) ——模拟输入设备对象建立函数,通过该函数将A/ D 转换硬件映射为Matlab workspace 中的一个模拟输入设备对象句柄;
winsound——声卡设备驱动程序,Matlab 软件内含该驱动程序。 2) 配置。给ai对象添加通道,设置采样频率。 addchannel (ai ,1);%添加通道
fs = 44100; %采样频率设置为441KHz aiSampleRate = fs ;%设置采样频率 3) 采样。启动设备对象,开始采集数据。 t = 2s ; %设定采样时间 start (ai); %启动设备对象
data = get (ai ,t fs) ; %获得采样数据 4) 终止。停止对象并删除对象。 stop (ai) ; delete (ai) ;
这样便完成了一次完整的数据采集过程,采样频率和采样时间都是由用户输入的,十分方便。
Matlab中存储及读取数据
我们在使用MATLAB过程中,免不了希望将运算过程中的某些数据「储存」起来,以便下次使用再「读取」利 用。「储存」和「读取」的指令分别是save及load,而save的数据型态又分为:(1)双位元格式 (binary format) 的 MAT-file,(2) ASCII 格式的 ASCII-file。MAT-file 是以双位元字元储存,可让电脑在读出/入(input/output) 速率加 快,其格式为testmat(test为档名),MATLAB将档案的型态预设为MAT-file;而ASCII-file则是以可辨识的字元 储存,但会降低电脑在读出/入的速率,其格式为testdat(test为档名)。如果你的数据是只在MATLAB中产生 及被使用,那最好使用MAT-file。ASCII-file则必须用在当数据档要为其它不是MATLAB的应用软体读取时。
另外要注意,当save成MAT档是储存变数本身,而非直接储存变数的数据;而save成ASCII档则是直接储存变数的数值。
这二者储存的差异,造成在读取MAT档和ASCII档的数据有所不同,详见以下的范例。
须注意的是在储存及读取数据时,MAT-file或是ASCII-file的档最好为矩阵型态,否则可能在读取时有困难。数 据储存成矩阵的大小可以为m×n,其中m是列的数目,n则为行的数目。
以下就是几个save, load的使用范例
>> x=1:5; y=11:15; % 先产生二个列阵列 (row array} x, y
>> save data1 x y % 是将 x,y 二个变数的数值存入 data1 这个MAT-file,
%即data1其实是data1mat。data1mat 的内容为变数x, y,而非(1:5, 11:15) 的数据
>> save data2dat x y -ascii % 如果要将data1改以ASCII格式储存,则须加上-ascii
% 的选项。data2dat 的内容为(1:5, 11:15) 的数据
>> type data2dat % type 指令可以将 data2dat 的内容列出
>> load data1 % 读取 data1mat 档
>> x, y % 叫出 data1mat中的变数来读取其内容(1:5, 11:15)
>> load data2dat % 读取 data2dat 档
>> x2=data2(1,:); y2=data2(2,:); % 将data2中的第一及第二列数据分别以x2及y2
%变数读入,之后在运算中即可使用这二列数据
>> x=21:25; y=31:35;
>> save data3dat x y -ascii
>> load data3dat;
>> x3=data3(1,:); y3=data3(2,:); % 将data3中的第一及第二列数据分别以x3及y3 变数读入
%,之后在运算中即可使用这二列数据
>> A=[1 2 3; 4 5 6];
>> save data4dat A -ascii %是将A阵列的数值存入data4这个ASCII-file
>> load data4dat
>> x4=data4(:,1); % 令 x4 为 data4 的第一行数据
>> y4=data4(:,2); % 令 y4 为 data4 的第二行数据
>> z4=data4(:,3); % 令 z4 为 data4 的第三行数据
以上就是关于matlab如何保留最新的十五个数据全部的内容,包括:matlab如何保留最新的十五个数据、matlab怎么实现数据采集和存储、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)