MATLAB里存数据、取数据,看着简单,实际操作一堆坑。2026年了,我见过太多人在save和load这两个命令上翻车——要么格式选错打不开,要么变量名覆盖了还不知道。MAT文件和TXT文件到底怎么选?save命令有几种写法?load怎么只导指定变量?这篇把MATLAB数据导入导出的实用操作全拆开讲。
数据保存就两条路:存成TXT或者存成MAT。选错了格式,后面全是麻烦。
存TXT最直接,命令就一行:save afile.txt -ascii a。打开之后数据是指数形式,比如1.7000000e+001,实际值是17。读起来费劲,但好处是任何文本编辑器都能打开,跟Python、C++交换数据方便。2026年做跨语言数据对接,TXT依然是最通用的格式。
MAT文件是MATLAB自己的二进制格式,优势明显:保存速度快,文件体积小,而且能存任意类型的变量——矩阵、结构体、cell数组全都行。一个500MB的数据集,存MAT可能只有80MB,存TXT能到200MB以上。
怎么存MAT?最简单的方式:File菜单里点Save Workspace As,直接把工作区所有变量打包存成.mat文件。或者在工作区浏览器里右击变量名,选Save As,只存单个变量。
还有一种场景:只想存结构体里的某些字段。用save('filename', '-struct', 's', 'f1', 'f2'),s是结构体名,f1和f2是你要存的字段。这个功能很多人不知道,但处理大型项目时特别实用,不用把整个结构体都 dump 出来。

save这个命令,写法比你想的多。
save不带参数,默认把工作区所有变量存到matlab.mat里。save('filename')把所有变量存到指定文件。save('filename', 'var1', 'var2')只存你指定的变量,其他的不管。
如果你有一堆变量,但只想存名字匹配某个规则的,用正则表达式:save('-regexp', 'expr1', 'expr2')。比如save('-regexp', 'data', 'result'),只存以data和result开头的变量。
存结构体用-struct参数,前面提过了。指定格式用-ascii或者不加(默认就是MAT格式)。
举个实际例子。工作区里有A(2×3矩阵)、I_q(415×552×3的uint8数组)、num_of_cluster(1×1标量),一共687250个元素,占687320字节。用whos -file matlab.mat能看到文件里到底有什么。存的时候如果只想要A和num_of_cluster,命令就是save('partial.mat', 'A', 'num_of_cluster'),2秒搞定,文件只有72字节。
load命令跟save对应,但用法更灵活。
load不带参数,默认读matlab.mat。load filename读指定文件的全部变量。load filename X Y Z只读X、Y、Z这几个变量,MAT文件里甚至支持通配符*。
load -ascii filename强制按ASCII格式读,文件里必须是纯数字文本,否则报错。load -mat filename强制按MAT格式读,文件不是.mat也会报错。
load -regexp 'expr1' 'expr2'用正则表达式筛选要导入的变量。比如load data.mat -regexp '^temp'只导入以temp开头的变量。
这里有个坑:open('filename.mat')和load('filename.mat')完全不一样。open是把MAT文件以结构体形式打开,变量全在一个结构体里,要用s.A、s.B这种方式访问。load是把变量直接倒进工作区,A、B直接就能用。2026年了还有人把这两个搞混,调试半天找不到变量,就是因为用了open而不是load。
实际操作跑一遍:whos -file matlab.mat先看文件里有啥,确认有A、I_q、ans、num_of_cluster这4个变量。然后load matlab.mat,工作区浏览器里立刻全出现了。如果只要A,就load matlab.mat A,干净利落。
别纠结,看需求。
跟其他语言交换数据,选TXT。用-ascii存,用load -ascii读,谁都能打开。代价是精度损失和文件体积大。
MATLAB内部流转,选MAT。速度快,体积小,什么类型都能存。2026年的MATLAB支持-v7.3格式,单个MAT文件最大能到2GB,超过的话自动切分成多个文件,不用手动处理。
跨机器传输,MAT文件也比TXT靠谱。TXT在Windows和Linux之间换行会出问题,MAT不会。但注意MATLAB版本差异:2026年的MATLAB保存的MAT文件,2020年之前的版本可能打不开。老版本存的文件,新版本通吃。
还有一个技巧:save('filename', 'var1', '-v7.3')指定用-v7.3格式存大文件。默认的-v7格式单个变量最大2GB,-v7.3能到2GB且支持压缩。处理图像数据、点云数据的时候,这个参数能省几十GB的存储空间。
MATLAB数据导入导出这事,核心就记住6个命令变体:save存、load取、-ascii处理文本、-struct处理结构体、-regexp筛变量、whos -file看文件内容。TXT和MAT各有各的场景,别一刀切。2026年的MATLAB在文件IO上比以前强太多了,但这些基础操作的逻辑没变。把save和load的几种写法吃透,日常工作里至少省一半的文件处理时间。别光收藏,打开MATLAB敲一遍,比看10篇教程都管用。
武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks 等。