matlab怎么读取文本文件中的数据?
我的文本文件中有13列数据,现在需用第1、2列的数据进行傅里叶变换,程序是什么?高手请教!!!数据很大,一个文本文档有40多兆(13列,n行(差不多上千行,不好计数)),...
我的文本文件中有13列数据,现在需用第1、2列的数据进行傅里叶变换,程序是什么?高手请教!!!
数据很大,一个文本文档有40多兆(13列,n行(差不多上千行,不好计数)),数据提取出来还要进行傅里叶变换!! 展开
数据很大,一个文本文档有40多兆(13列,n行(差不多上千行,不好计数)),数据提取出来还要进行傅里叶变换!! 展开
3个回答
展开全部
方法一:
A=importdata(file,space,line)
其中,file是所读取的文件名,space是特定的分隔符,line是一个数字,指文本中字符串文字的行数,如上文的数据中line=4。
此代码的含义是,line行是title,line+1行到end是数据,按特定分隔符space读取数据。此方法可以读取文本在上和数据在下的文件。
A是一个sturct,其中A.data就是所需的数据了。
exapmle:
A=importdata('test.txt',' ',4);%运行即可取得数据A.data
此方法也可以按以下操作获取:
在文件菜单中选择 file/import data,按照提示进行操作至结束。
在 command 窗口中输入
>> whos
Name Size Bytes Class
data 5x4 160 double array
textdata 4x1 300 cell array
Grand total is 54 elements using 460 bytes
>> data
data =
1 11 111 1111
2 22 222 2222
3 33 333 3333
4 44 444 4444
5 55 555 5555
>> textdata
textdata =
'你好'
'欢迎来到'
'百思论坛'
'www.baisi.net'
方法二:
[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)
说明:%s可以是其他形式,跟读入的数据类型有关,比如这里也可以用%d,%f等。
这里%s的个数和[a1,a2,a3,a4]对应。
>> [a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)
a1 =
'1'
'2'
'3'
'4'
'5'
a2 =
'11'
'22'
'33'
'44'
'55'
a3 =
'111'
'222'
'333'
'444'
'555'
a4 =
'1111'
'2222'
'3333'
'4444'
'5555'
因以字符串的形式读入,所以有''。
文件内容形式二(假定文件名为test2.txt):
你好
1 11 111 1111
欢迎来到
2 22 222 2222
百思论坛
3 33 333 3333
www.baisi.net
4 44 444 4444
5 55 555 5555
说明:这种内容格式的文件用上面的方法是不行的。
方法三:
以下是由chinamaker编写的一种方法,但是需要重新建一个文本。
fidin=fopen('test2.txt'); % 打开test2.txt文件
fidout=fopen('mkmatlab.txt','w'); % 创建MKMATLAB.txt文件
while ~feof(fidin) % 判断是否为文件末尾
tline=fgetl(fidin); % 从文件读行
if double(tline(1))>=48&&double(tline(1))<=57 % 判断首字符是否是数值
fprintf(fidout,'%s\n\n',tline); % 如果是数字行,把此行数据写入文件MKMATLAB.txt
continue % 如果是非数字继续下一次循环
end
end
fclose(fidout);
MK=importdata('MKMATLAB.txt'); % 将生成的MKMATLAB.txt文件导入工作空间,变量名为MK,实际上它不显示出来
>> MK
MK =
1 11 111 1111
2 22 222 2222
3 33 333 3333
4 44 444 4444
5 55 555 5555
A=importdata(file,space,line)
其中,file是所读取的文件名,space是特定的分隔符,line是一个数字,指文本中字符串文字的行数,如上文的数据中line=4。
此代码的含义是,line行是title,line+1行到end是数据,按特定分隔符space读取数据。此方法可以读取文本在上和数据在下的文件。
A是一个sturct,其中A.data就是所需的数据了。
exapmle:
A=importdata('test.txt',' ',4);%运行即可取得数据A.data
此方法也可以按以下操作获取:
在文件菜单中选择 file/import data,按照提示进行操作至结束。
在 command 窗口中输入
>> whos
Name Size Bytes Class
data 5x4 160 double array
textdata 4x1 300 cell array
Grand total is 54 elements using 460 bytes
>> data
data =
1 11 111 1111
2 22 222 2222
3 33 333 3333
4 44 444 4444
5 55 555 5555
>> textdata
textdata =
'你好'
'欢迎来到'
'百思论坛'
'www.baisi.net'
方法二:
[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)
说明:%s可以是其他形式,跟读入的数据类型有关,比如这里也可以用%d,%f等。
这里%s的个数和[a1,a2,a3,a4]对应。
>> [a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)
a1 =
'1'
'2'
'3'
'4'
'5'
a2 =
'11'
'22'
'33'
'44'
'55'
a3 =
'111'
'222'
'333'
'444'
'555'
a4 =
'1111'
'2222'
'3333'
'4444'
'5555'
因以字符串的形式读入,所以有''。
文件内容形式二(假定文件名为test2.txt):
你好
1 11 111 1111
欢迎来到
2 22 222 2222
百思论坛
3 33 333 3333
www.baisi.net
4 44 444 4444
5 55 555 5555
说明:这种内容格式的文件用上面的方法是不行的。
方法三:
以下是由chinamaker编写的一种方法,但是需要重新建一个文本。
fidin=fopen('test2.txt'); % 打开test2.txt文件
fidout=fopen('mkmatlab.txt','w'); % 创建MKMATLAB.txt文件
while ~feof(fidin) % 判断是否为文件末尾
tline=fgetl(fidin); % 从文件读行
if double(tline(1))>=48&&double(tline(1))<=57 % 判断首字符是否是数值
fprintf(fidout,'%s\n\n',tline); % 如果是数字行,把此行数据写入文件MKMATLAB.txt
continue % 如果是非数字继续下一次循环
end
end
fclose(fidout);
MK=importdata('MKMATLAB.txt'); % 将生成的MKMATLAB.txt文件导入工作空间,变量名为MK,实际上它不显示出来
>> MK
MK =
1 11 111 1111
2 22 222 2222
3 33 333 3333
4 44 444 4444
5 55 555 5555
展开全部
[fid,message]=fopen('文件名.后缀','r');%打开数据文件
if fid==-1
disp(message); %判断文件打开与否
end
[A,count]=fread(fid,[行数,13],'double');%将数据读入A中,?行,13列
fclose(fid);
A11=zeros(0,2); %初始化2列空间
i=1:13; %n为行数
A11(:,i)=A(:,1); %取第一列
A12(:,i)=A(:,2); %取第二列
if fid==-1
disp(message); %判断文件打开与否
end
[A,count]=fread(fid,[行数,13],'double');%将数据读入A中,?行,13列
fclose(fid);
A11=zeros(0,2); %初始化2列空间
i=1:13; %n为行数
A11(:,i)=A(:,1); %取第一列
A12(:,i)=A(:,2); %取第二列
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我这里有读文档的程序文章,地址:
http://blog.tom.com/jiaqiangwang/article/2497.html
http://blog.tom.com/jiaqiangwang/article/2498.html
程序经过我调试过,可以用
http://blog.tom.com/jiaqiangwang/article/2497.html
http://blog.tom.com/jiaqiangwang/article/2498.html
程序经过我调试过,可以用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询