matlab如何实现通过变量来命名文件?

意思就是,我输入一个字符串,把这个字符串当做txt文件的文件名保存起来,应该怎么办??

我的方法:
mydir=uigetdir('d:','选择一个txt文件保存目录');%%%选择txt文件的保存位置
% %%%可以选择已存在文件夹,也可以新建文件夹,也可以
% %%%选择D盘以外的文件夹,这里的d只起参考作用

str=input('str=','s'); %其中's'是输入字符串的意思,即输入txt文件名

fid=fopen([mydir '\' str '.txt'],'w');%%%以刚才的名字新建txt文件

a=[1 2 3;5 7 9];%%%要写入的数据
fprintf(fid,'%d %d %d\n',a');%%%向txt文件写入数据,如果不写数据的话此步骤可以省略

fclose(fid);%%%关闭txt文件

楼上的方法我也看过了,有一些小问题,我修改了一下,另外个人觉得楼上的方法把简单问题复杂化,很简单的东西没必要搞得那么复杂吧,下面给出我修改后的楼上的方法

楼上修改后:
clear;clc;
file_name_tag=1;
err_file_name=['\/:*?"<>|',':*?“{}'];%文件名不应含有的字符,此处可以根据需要自己改
while file_name_tag
err_num=0;
% err_char=[];%%%
file_name=input('文件名:','s');
err_char=zeros(1,length(file_name));
for n=1:length(err_file_name)
if sum(file_name==err_file_name(n))
err_num=err_num+1;
%获取输入的文件名中非法的字符:
err_char(err_num)=err_file_name(n);%err_char为字符串,应用char()函数
end;
end;
if err_num
disp(strcat('文件名中含有非法字符:“',err_char(1:err_num),'”,请重新输入!'));
elseif isempty(file_name)
disp('文件名不能为空')
else
file_name_tag=0; %跳出循环
end;
end;
file_dir_tag=1;%准备进入循环
while file_dir_tag
file_dir=input('路径:','s');
if file_dir(end)~='/'||file_dir(2)~=':'||file_dir(3)~='/'
disp('错误的文件路径,应以“X:/”开头,并以“/”结束,请重新输入!');
elseif isempty(file_name)
disp('路径不能为空')
else
file_dir_tag=0;%跳出循环
end;
end;
file_format_tag=1;%准备进入循环
while file_format_tag
file_format=input('文件格式:','s');
if file_format(1)~='.'
disp('错误的文件格式,应以“.”开头,请重新输入!');
elseif isempty(file_name)
disp('文件格式不能为空')
else
file_format_tag=0;%跳出循环
end;
end;
wenjian=strcat(file_dir,file_name,file_format);%文件路径、名称和格式
% dos(['echo > ',wenjian]);%保存文件
fid=fopen(wenjian,'w');
a=[1 2 3;5 7 9];
fprintf(fid,'%d %d %d\r\n',a');
fclose(fid);
这算是比较复杂的方法,我修改了一些小问题,做了一些改动
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-05-25
创建文件【wenjian.m】,内容如下:
clear all;%清除所有内存变量
clc;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%定义文件名
file_name_tag=1;%准备进入循环,至少循环一次,此结构相当于C语言do...while...语句
err_file_name=['\/:*?"<>|'];%文件名不应含有的9个字符
while file_name_tag
err_num=0;
err_char=[];
file_name=input('文件名:','s');%其中's'是输入文件名为字符串,可以为空
for n=1:length(err_file_name)
if sum(file_name==err_file_name(n))
err_num=err_num+1;
%获取输入的文件名中非法的字符:
err_char(err_num)=char(err_file_name(n));%用char()函数生成字符串err_char
end;
end;
if err_num
disp(strcat('文件名中含有非法字符:',err_char,',请重新输入!'));
else,
file_name_tag=0; %跳出循环
end;
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%设置文件路径
file_path_form=input('路径输入方式,“0”代表自动,“1”代表手动:');
switch file_path_form
case 0
file_path=strcat(uigetdir,'/');%路径与文件名之间应该用“/”隔开
case 1
file_path_tag=1;%准备进入循环
while file_path_tag
file_path=input('路径:','s');
if length(file_path)==0||file_path(end)~='/'||file_path(2)~=':'||file_path(3)~='/'
disp('错误的文件路径,应以“X:/”开头,并以“/”结束,请重新输入!');
else,
file_path_tag=0;%跳出循环
end;
end;
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%设置文件扩展名
file_ext_tag=1;%准备进入循环
while file_ext_tag
file_ext=input('文件扩展名:','s');
if length(file_ext)==0||file_ext(1)~='.'
disp('错误的文件扩展名,应以“.”开头,请重新输入!');
else,
file_ext_tag=0;%跳出循环
end;
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%生成文件
file=strcat(file_path,file_name,file_ext);%完整的文件包括路径、名称和扩展名
fid=fopen(file,'r');
if fid>0%检查文件是否已存在
fid=fclose(fid);%文件以只读方式打开,及时关闭文件
sign=input(['文件已存在!输入“Y”或“y”,则更新原文件;',...
'输入“N”或“n”,则请更改文件名、路径或扩展名;',...
'输入其它字符,则退出:'],'s');
if sign=='Y'||sign=='y'
delete(file);%先删除原文件
fid=fopen(file,'w');%后创建新文件
fid=fclose(fid);%文件已更新,及时关闭文件
elseif sign=='N'||sign=='n'
wenjian;%返回初始状态,重新输入
end;
else,
fid=fopen(file,'w');%文件不存在,创建新文件
if fid>0
fid=fclose(fid);%文件已更新,及时关闭文件
end;
end;本回答被提问者采纳
第2个回答  2011-07-20
str=input('str=','s'); %其中's'是输入字符串的意思
filename=['c:\' str '.txt']
这样你就可以使用filename作为你的文件名了!
第3个回答  2011-07-21
你这样不行,但是load(a)就可以了,也可以用

for i = 1:100,
temp = strcat(filepath, num2str(i));
cd(temp);
A = load(文件名);
end

如果每个文件夹下面的文件名不同,那就比较麻烦了,你需要用what命令,知道文件夹下面有几个文件,选出你需要的文件,再load
另外,站长团上有产品团购,便宜有保证
第4个回答  2011-07-20
str=input('str=','s'); %其中's'是输入字符串的意思
dos(['echo > ',str])