加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

[转载]matlab GUI中uiputfile保存文

(2016-01-17 17:54:22)
标签:

转载

文章转自matlab中文文坛:http://www.ilovematlab.cn/thread-35547-1-1.html 在此深表感谢  
这两天,遇到一些会员在GUI中使用uiputfile保存文件时,不能存成自己输入的文件名
针对这个问题,我来简单的总结一下,如何实现这个目的,并解决这个问题

问题1.关于matlab数据保存为mat的问题
想在gui界面上将数据保存为.mat文件,不知道用什么方式?
要求可以将数据存到任意磁盘,可以给数据任意命名。
下面的程序:不能够实现任意命名,保存在同一个地方就会覆盖原来数据。
复制内容到剪贴板
代码:

[filename ,pathname]=uiputfile({'*.mat','MAT-files(*.mat)'},'保存');%pathname获取保存数据路径,filename获取保存数据名称
str=strcat(pathname,filename);%字符串连接
save str a;%将数据a保存为mat文件;
可是在保存时遇见问题是保存的.mat文件都是str.mat
可以实现任意路径保存,但是不能实现名称的更改。
解析:
这是save函数的误用造成的
save str a
这种格式,str就是指定的文件名,你当然改不了
如果想随时替换这个str,存成自己输入的文件名
那就要写成下面的格式
复制内容到剪贴板
代码:

save(char(str), 'a')
问题2.为什么Matlab的uiputfile保存文件时,第二次把前面的覆盖了呢?
保存文件时能不能任意存文件名呢?
读入文件代码:
复制内容到剪贴板
代码:

[filename,filepath]=uigetfile('*.txt','Select Input file');
file = [filepath filename];
fid = fopen(file,'r');
if fid == -1
    ('Error opening the file')
end
%%读取文件
while 1
    nextline = fgetl(fid); %读第一行
    if ~ischar(nextline)
        break,
    end %读到最后跳出
    a =fscanf(fid,'%f %f',[10,90]);
    set(handles.edit6,'string',a);
end
保存文件代码:
复制内容到剪贴板
代码:

[FileName PathName]=uiputfile({
    '*.txt','Txt Files(*.txt)';'*.*','All Files(*.*)'},'choose a File');
str= [PathName FileName]
set(handles.edit4,'string',str);
m=get(handles.displayArea,'String')
fid = fopen('.txt', 'w');
fwrite(fid, '', 'integer*4')
fprintf(fid,'%s',m);
fclose(fid)
结果:为什么uiputfile保存文件时,第二次把前面的覆盖了呢?
解析:
fid = fopen('.txt', 'w');
上面这句决定了你要存的文件名
你写成.txt,那名字就是它了
即使你输入了也改变不了
要想存的文件名是自己输入的,就要把上面这句改成
复制内容到剪贴板
代码:

fid = fopen(char(str), 'w');
就可以存成不同的文件名了,自己输入什么就是什么。
好了,大家去试试吧!
欢迎反馈,补充说明!

0

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有