Mac版MATLAB 2017使用变量指定保存文件名报错求助
解决MATLAB保存指定变量到自定义文件名的问题
咱们先拆解下你遇到的两个问题:
为什么save(name1,a)会报错?
当你用函数形式调用save时,第二个及以后的参数需要是表示变量名的字符向量/字符串,而你直接传了变量a,MATLAB会把它的数值1当成参数传入——这显然不是字符向量,所以就触发了Error using save Argument must contain a character vector的错误。
为什么save name1 a生成的文件名是name1而不是file_a.mat?
这是因为你用了命令形式调用save,这种写法下,MATLAB会把name1当成文件名的字面量,不会去读取变量name1里存储的'file_a.mat'内容,自然生成的文件就叫name1.mat了。
正确的写法
推荐用函数形式调用,把要保存的变量名用单引号括起来(转成字符向量),这样既可以引用变量里的文件名,又能指定要保存的变量:
a=1; b=3; name1='file_a.mat'; save(name1, 'a')
如果要保存多个变量,比如同时存a和b,只需要追加对应的字符向量参数:
save(name1, 'a', 'b')
如果非要用命令形式(不推荐,因为可读性和安全性较差),可以借助eval来解析变量里的文件名:
eval(['save ', name1, ' a'])
关键总结
- 函数形式
save(filename, varName1, varName2...):filename可以是变量(存储文件名的字符向量),varName必须是表示变量名的字符向量/字符串 - 命令形式
save filename var1 var2:所有参数都是字面量,不会解析变量
内容的提问来源于stack exchange,提问作者user552231
相关产品推荐
相关产品推荐

