-
2021-04-26 19:23:36
问题描述:
想读取一个txt文本中的很多数据。数据之前有几行是中文,然后才是数据,如何用MATLAB读取txt文件中标识符所对应的列啊,多谢指教了!文件大概是这样的:
你好欢迎来到............sum1 sum2 sum3 sum41 11 111 11112 22 222 22223 33 333 33334 44 444 44445 55 555 5555目标是逐行扫描后找到特定标识符‘sum2’,并保存与sum2相对应的列。即 sum21122334455另:sum2下面只有一部分数据,还有一部分和这一部分类似,但列数不同,您能教我一下想要提取sum2下的列用什么函数吗?
解决办法:
读取行以后得到sum2所在的列,然后接着往下读取数据,把数据用空格切割,保留sum2所在的列的数据fid=fopen('save.txt','r');
line = fgetl(fid);
while~feof(fid)&&isempty(strfind(line,'sum2'))
line=fgetl(fid);
end
str = strsplit(line,' ');
%查找sum2所在的列程序段,自己添加
index = 2;
%这里我简单的令其为2了
yourmat = [];
while~feof(fid)
line=fgetl(fid);
str = strsplit(line,' ');
if isempty(str{1})
yourmat = [yourmat; str2double(str{index+1})];
else
yourmat = [yourmat; str2double(str{index})];
end
end
fclose(fid);
源数据保存在save.txt中。
更多相关内容 -
用matlab读取txt文件并作图
2017-03-21 15:50:31用matlab读取txt文件并作图,txt为光谱仪测量的反射率数据,附上代码和反射率数据。 -
matlab读取txt文件
2020-12-15 13:49:03MATLAB提供了一系列低层输入输出函数,专门用于文件操作。本文提供了几种Matlab读写文件的方法和预写的脚本。如何编写MATLAB程序才能实现对.TXT文档的读写呢?
MATLAB提供了一系列低层输入输出函数,专门用于文件操作。本文提供了几种Matlab读写文件的方法和预写的脚本。Matlab读取 .txt文件
这里提供两种方法:1,load()函数。2,importdata()函数。
一、对于load()函数。
例子,data_txt.txt内容如下:
0 1.000000 1.000000 1.000000
1 3.000000 4.000000 5.000000
2 5.000000 7.000000 9.000000
3 7.000000 10.00000 13.00000
4 9.000000 13.00000 17.00000
5 11.00000 16.00000 21.00000example_load_txt.m 内容如下:
clear all; close all; clc %对于类似的txt文件,不含有字符,只有数字 data=load('F:\F桌面文件\data_txt.txt'); x=data(:,1); y1=data(:,2); y2=data(:,3); y3=data(:,4); plot(x,y1,'r--',x,y2,'bo',x,y3,'ks')
二、对于importdata()函数。
例子,data_txt_string.txt内容如下:
i co c1 c2
0 1.000000 1.000000 1.000000
1 3.000000 4.000000 5.000000
2 5.000000 7.000000 9.000000
3 7.000000 10.00000 13.00000example_importdata_txt.m 内容如下:
clear all; close all; clc %只是第一行有字符,则使用importdata可直接读取数据 data1=importdata('F:\F桌面文件\data_txt_string.txt'); data2=data1.data; %若没有这一步,出不出来图。 x=data2(:,1); y1=data2(:,2); y2=data2(:,3); y3=data2(:,4); plot(x,y1,'r--',x,y2,'bo',x,y3,'ks');
另外,转 http://blog.sina.com.cn/s/blog_4b5b880c0100e7mm.html
1、文件的打开与关闭
1)打开文件
在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。fopen函数的调用格式为:
fid=fopen(文件名,‘打开方式’)
说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。文件名用字符串形式,表示待打开的数据文件。常见的打开方式如下:‘r’:只读方式打开文件(默认的方式),该文件必须已存在。 ‘r+’:读写方式打开文件,打开后先读后写。该文件必须已存在。 ‘w’:打开后写入数据。该文件已存在则更新;不存在则创建。 ‘w+’:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。 ‘a’:在打开的文件末端添加数据。文件不存在则创建。 ‘a+’:打开文件后,先读入数据再添加数据。文件不存在则创建。
另外,在这些字符串后添加一个“t”,如‘rt’或‘wt+’,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。
2)关闭文件
文件在进行完读、写等操作后,应及时关闭,以免数据丢失。关闭文件用fclose函数,调用格式为:
sta=fclose(fid)
说明:该函数关闭fid所表示的文件。sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。如果要关闭所有已打开的文件用fclose(‘all’)。2、二进制文件的读写操作
1)写二进制文件
fwrite函数按照指定的数据精度将矩阵中的元素写入到文件中。其调用格式为:
COUNT=fwrite(fid,A,precision)
说明:其中COUNT返回所写的数据元素个数(可缺省),fid为文件句柄,A用来存放写入文件的数据,precision代表数据精度,常用的数据精度有:char、uchar、int、long、float、double等。缺省数据精度为uchar,即无符号字符格式。
例6.8 将一个二进制矩阵存入磁盘文件中。a=[1 2 3 4 5 6 7 8 9];
fid=fopen(‘d:\test.bin’,‘wb’) %以二进制数据写入方式打开文件
fid =
3 %其值大于0,表示打开成功
fwrite(fid,a,‘double’)
ans =
9 %表示写入了9个数据
fclose(fid)
ans =
0 %表示关闭成功2)读二进制文件
fread函数可以读取二进制文件的数据,并将数据存入矩阵。其调用格式为:
[A,COUNT]=fread(fid,size,precision)
说明:其中A是用于存放读取数据的矩阵、COUNT是返回所读取的数据元素个数、fid为文件句柄、size为可选项,若不选用则读取整个文件内容;若选用则它的值可以是下列值:N(读取N个元素到一个列向量)、inf(读取整个文件)、[M,N](读数据到M×N的矩阵中,数据按列存放)。precision用于控制所写数据的精度,其形式与fwrite函数相同3、文本文件的读写操作
1)读文本文件
fscanf函数可以读取文本文件的内容,并按指定格式存入矩阵。其调用格式为:
[A,COUNT]=fscanf(fid,format,size)
说明:其中A用来存放读取的数据,COUNT返回所读取的数据元素个数,fid为文件句柄,format用来控制读取的数据格式,由%加上格式符组成,常见的格式符有:d(整型)、f(浮点型)、s(字符串型)、c(字符型)等,在%与格式符之间还可以插入附加格式说明符,如数据宽度说明等。size为可选项,决定矩阵A中数据的排列形式,它可以取下列值:N(读取N个元素到一个列向量)、inf(读取整个文件)、[M,N](读数据到M×N的矩阵中,数据按列存放)。2)写文本文件
fprintf函数可以将数据按指定格式写入到文本文件中。其调用格式为:
fprintf(fid,format,A)
说明:fid为文件句柄,指定要写入数据的文件,format是用来控制所写数据格式的格式符,与fscanf函数相同,A是用来存放数据的矩阵。
例6.9 创建一个字符矩阵并存入磁盘,再读出赋值给另一个矩阵。a=‘string’;
fid=fopen(‘d:\char1.txt’,‘w’);
fprintf(fid,‘%s’,a);
fclose(fid);
fid1=fopen(‘d:\char1.txt’,‘rt’);
fid1=fopen(‘d:\char1.txt’,‘rt’);
b=fscanf(fid1,‘%s’)
b =
stringmatlab读txt文件
fid=fopen('fx.txt','r'); %得到文件号 [f,count]=fscanf(fid,'%f %f',[12,90]); %把文件号1的数据读到f中。其中f是[12 90]的矩阵 %这里'%f %f'表示读取数据的形势,他是按原始数据型读出 fclose(fid); %关闭文件
另外有的txt文件还可以用load来打开
其语句为f=load('xxx.txt')
这里推荐用第一种方式较好。因为有些时候,特别是xxx.txt 的一行种有多个数据时用load
就比较麻烦。而第一种方法可以批量导入文件。转自https://blog.csdn.net/awakeljw/article/details/76175515
matlab的文件读取函数功能可以读取各种文件类型,包括
textread(字母和数值每行格式一致)
xlsread(读取excel文件)
importdata(字母和数值分开,以数字为主,字母只存在前几行)
load(纯数据)
dlmread(单一分隔符的纯数据或ASCII数据文件)
textscan(类似于textread,但使用前必须fopen打开文件)
csvread(类似于xlsread,读取.csv格式的文件)
fscanf(读取已知文件格式的文本文件)matlab对文件中混乱的文本格式读取操作总结
对于本文字符数字较为混乱的文本进行文本操作需要对文件内部进行操作,包括文本位置指针,文件逐行读取,字符匹配等等复杂操作。主要用到的几个函数有
feek(设置指针位置)
ftell(获得指针位置)
frewind(重设指针到文件起始位置)
feof(测试指针是否在文件结束位置)具体用法:
fseek(fid,-1,’eof’),指针到末尾
fseek(fid,2,’bof’),起始位置后第二个字符位置
ftell(fid);找到指针位置
frewind(fid),指针回到起始
feof(fid)判断指针是否在末尾原文链接
https://www.cnblogs.com/carle-09/p/9013582.html -
用matlab读取txt文件然后画图
2013-04-20 14:06:47用matlab读取txt文件然后画图,只需改变文件路径就可用 -
读取txt文件内容matlab代码实现
2017-10-09 19:13:51读取txt文件内容matlab代码实现。本资源中包括了.txt测试文档和matlab代码示例。 -
TxtRead_matlab读取txt文件并绘图_txt信号_
2021-10-01 10:49:58读取txt数据,根据数据绘制图形,可用于示波器信号读取 -
matlab读取txt文件数据
2021-04-18 07:05:48我要讲一个txt文件中的一些中文字去掉,只剩下数据,由于数据量很大,手动不显示,故想通过matlab程序来实现,由于对matlab这方面的了解不够,所以来想各位大侠请教!谢谢!现列举一部分的数据如下:Separator ...我要讲一个txt文件中的一些中文字去掉,只剩下数据,由于数据量很大,手动不显示,故想通过matlab程序来实现,由于对matlab这方面的了解不够,所以来想各位大侠请教!谢谢!
现列举一部分的数据如下:
Separator Tab
Decimal_Separator .
Multi_Headings Yes
X_Columns No
Time_Pref Relative
Operator Administrator
Date 2010/04/26
Time 15:59:34.84375
***End_of_Header***
Channels 3
Samples 26 26 26
Date 2010/04/26 2010/04/26 2010/04/26
Time 15:59:34.84375 15:59:34.84375 15:59:34.84375
X_Dimension Time Time Time
X0 0.0000000000000000E+0 0.0000000000000000E+0 0.0000000000000000E+0
Delta_X 1.000000 1.000000 1.000000
***End_of_Header***
X_Value Untitled Untitled 1 Untitled 2 Comment
0.000000 53.200249 270.000000
50.001653 22119.769820 -33.084169
100.003305 13.178040 52.282467
150.004958 22.540946 0.990573
200.006611 3.356149 -51.642757
250.008264 101.617303 178.477850
300.009916 1.716415 1 85.430598
350.011569 38.833629 -18.278390
400.013222 1.065783 91.951781
450.014875 1.168638 168.381957
500.016527 0.577526 24.472467
我自己也找了一些相应的程序,但运行起来有问题,程序如下:
clc;
clear;
fidin=('test.txt');
fidout=fopen('A.txt','w');
while feof(fidin)==1;
tline=fgetl(fidin);
if double(tline(1))>=48&&double(tline(1))<=57
fprintf(fidout,'%s/n/n',tline);
contine
end
end
fclose(fidout);
MK=importdata('A.txt');
提示错误如下:
??? Error using ==> feof
Invalid file identifier. Use fopen to generate a valid file identifier.
Error in ==> abc at 5
while ~feof(fidin)==1;
希望各位大侠不吝赐教~~ 谢谢!
-
用MATLAB读取txt文件并绘图
2021-04-19 03:13:33幅值为5、频率为10Hz的正弦信号,并写入数据文件MySin.txt,并读取文本文件MySin.txt 中的数据文件,进行绘图.% Applying the Mysin function to generate a sine waveform...with amplitude and frequency are 5 ...幅值为5、频率为10Hz的正弦信号,并写入数据文件MySin.txt,并读取文本文件MySin.txt 中的数据文件,进行绘图.
% Applying the Mysin function to generate a sine waveform
...with amplitude and frequency are 5 and 10 respectively,and then
...writing the sine wave data to the text file-Mysin.txt
clear;clc;
A = 5; % The amplitude of sinusoid.
fre = 10; % The frequency of sinusoid.
N = 1024; % The number of sampling points.
Fs = 1024; % Sampling frequency.
dt = 1/Fs; % Time interval.
t = (0:(N-1))*dt; % Time vector.
Xt = A*sin(2*pi*f*t + 3*pi/4); % Generating a sine function.
file_type = fopen('D:\MySin.txt','w'); % open text file-MySin.txt.
...(Creat a text file unless this text file is exist) fprintf(file_type,'%12f\n',Xt); % Formatting the input data,and the to the text file. fclose(file_type); % close the text file-Mysin.txt.
% Reading the data in the text file-Mysin.txt,and then ploting the sinusoid.
B = load('D:\MySin.txt'); % Loading the data of sinusoid.
plot(t,B); % ploting the sinusoid.
ylim([-max(B)-max(B)/4 max(B)+max(B)/4]); % Set the range of Y axis.
title('正弦信号X=5*sin(20*\pi*t+3*\pi/4)','FontName','黑体','FontSize',10); % Add the title.
xlabel('Time/(s)','FontName','黑体','FontSize',10); % Add the label
of X axis.
ylabel('X(t)','FontName','New Times Roman','FontSize',10); % Add the label of Y axis.
-
读取文本文件数据:从许多 .txt 文件中读取实验浮点数据。-matlab开发
2021-06-01 11:47:24这是我编写的一个小函数,用于解决永恒的麻烦,或者试图从一堆包含类似数据的文本文件中读取实验数据。 例如解决方案_001.txt 解决方案_002.txt . . . 解决方案_00457.txt 所有这些都具有相似的数据结构。 可以在... -
MATLAB读取txt文件数据绘制图像
2022-04-01 20:04:09MATLAB读取txt文件数据绘制图像 现有data.txt文件存储由数据采集卡读取到的6000000个数据。 下面记录最基础的用MATLAB读取txt文件数据并绘制图像的代码。 % 关闭所有的Figure窗口 close all; % 清除工作空间的... -
MATLAB读取txt文件并存入矩阵
2021-04-30 16:24:15fileID=fopen('Data.txt'); A=textscan(fileID,'%f %*f %*f %*f %f %f %f'); fclose(fileID); Matrix=cell2mat(A); textscan中,%*f表示不读取该列数据。 -
Matlab读取TXT文件并跳过中间几行的问题!!
2020-12-29 09:50:450 8900000 sil -2576.518555 SENT-START 8900000 9200000 dh -142.900620 the 9200000 9500000 ax -245.424423 9500000 9500000 sp -1.203973 9500000 9900000 ih -343.396576 information 如上边TXT文档内容有三组... -
原创matlab读取txt中文文本的解决方案-程序.rar
2019-08-12 23:30:20原创matlab读取txt中文文本的解决方案-程序.rar matlab对中文的支持一直以来都是个不小的问题,尤其在读取文本方面。一般读出的中文文本都是乱码,网上找了半天没找到答案,自己研究了一下,在快要绝望的时候终于... -
MATLAB读取txt文件的数据
2020-01-10 16:18:23常用的主要有以下几种方法: 1、load Data = load("filename.txt"); 该函数只能加载仅含有数字的文本文件,如果文档中夹杂着字母或者文字,...既可以读取数据又可以读取字符:Data.data矩阵里存放的是纯数字,Dat... -
关于MATLAB读取txt文件的方法
2019-11-25 16:57:41关于MATLAB读取txt文件的方法 一、如何读取一个文档下,多个txt文件? 一般读取的文件,命名都具有一定的规律,除去相同部分,剩下的变化按照时间、序号、某一特定的标志符等进行排列。 下面我们举个例子来操作。 ... -
转载:Matlab读取txt文件中的数据(使用textread函数)
2021-04-21 10:08:14在使用Matlab处理数据时,我们经常需要读取txt文档,可以使用Matlab中强大的textread函数。 它的基本语法是: [A,B,C,…] = textread(filename,format) [A,B,C,…] = textread(filename,format,N) 其中 filename就是... -
matlab读取txt文件.pdf
2021-10-14 13:12:19matlab读取txt文件.pdf -
如何用matlab读取txt文件坐标
2020-07-19 10:50:27matlab读取文本文件函数。 1、load——适合读取纯数据文本; 2、importdata——只读取数据,自动省略数据格式前后的字符,超大文件不适合; 3、textread、textscan——适合读取行列规整的文本,会存到元胞中,可... -
matlab读取txt文件获取数值数据
2020-11-16 08:57:17直接使用textread(‘text.txt’)竟然读取不全... -
matlab读取txt文件数据,然后限幅+递推平均滤波
2013-04-20 14:11:08matlab读取txt数据,然后然后限幅+递推平均滤波,只需改变文件路径就可用 -
Matlab读取txt文件中的数据(使用textread函数)
2020-10-30 09:37:13在使用Matlab处理数据时,我们经常需要读取txt文档,可以使用Matlab中强大的textread函数。 它的基本语法是: [A,B,C,...] = textread(filename,format) [A,B,C,...] = textread(filename,format,N) 其中filename... -
matlab读取txt文件大全
2018-12-23 10:39:30文章参考:... 笔记留作个人科研使用,如有转载不允许,请告知,立刻删除. 文件读取方法 目标:读取每一行数字数目不同的纯文本文件。形如: 9 289734689 002874... -
matlab读取txt文件为数组
2019-03-14 21:02:39clc;clear;close all; rows = [1 180];...[FileName,PathName] = uigetfile('*.txt','Select the Txt files');%弹出对话框,然后选择你要处理的文件 fid = fopen([PathName FileName]); temp = textscan(f... -
将 .txt 文件加载到 MATLAB 矩阵:加载 .txt 文件的内容并将其存储在 MATLAB 矩阵中-matlab开发
2021-05-30 20:09:45我发现能够从 .txt 文件读取数据并将它们存储在 MATLAB 矩阵中的功能非常有用和需要。 示例应用程序:假设您将一些数据存储在 .txt 文件中(来自某些测量),并且您想要另外处理它们、可视化或只是保存。 这段代码... -
matlab读取txt文件的''任意行任意列''操作指南
2020-01-30 16:16:42如果你的txt文件数据是矩阵形式的,而没有其它的文字,用下面的程序就可以读任意行任意列的数据 a=textread(‘filename.txt’); t=a(1:43,4:10); 1:43是1到43行,4:10是4到10列的数据 ... -
matlab 读取txt文件名称
2018-07-31 10:19:06%只读形式打开txt文件 file_t = fopen('mytxt.txt','r'); %以十进制读取,且读取的数据自动排成一列,排的顺序为:先从第一行左边到第一行右边,然后排第二行 A = fscanf(file_t,'%d'); %关闭文件 fclose... -
MATLAB 读取txt文件,并去掉数据之间的空格
2018-08-03 16:43:30clear all close all clc fin=fopen(['1.txt'],'r'); if fin>0 ... % 函数feof(fid)用法:文件指针 fid 到达文件末尾时返回“真”值;否则返回“假”; % while ~feof 表示 若 未读到...