精华内容
下载资源
问答
  • Matlab中读取txt文件的几种方法

    千次阅读 2021-04-18 13:23:41
    %%%文件中的非数字matlabtxt文件的处理,先行后列,从遇到第一个数字且该数字所在行在该数字后面的部分全为数字,则该数字列前面的列全作为字符串处理CELL对象,该数字及该行后面数字下面的列作为DOUBLE数字存储....

    一、纯数据文件(没有字母和中文,纯数字)

    a=importdata('*.txt');%%%*为所存的文件名

    a1=a.data;%%%文件中的数字

    a2=a.textdata;%%%文件中的非数字

    matlab对txt文件的处理,先行后列,从遇到第一个数字且该数字所在行在该数字后面的部分全为数字,则该数字列前面的列全作为字符串处理CELL对象,该数字及该行后面数字下面的列作为DOUBLE数字存储.如果一字符串按上述规则该作为数字,且该字符串所在行已经有一列作为数字处理,则将该字符作为NAN,并将以后所有行忽略,如果该字符串所在列为该按数字处理的第一列,则将该行全作字符串处理,并将该行及以下所有行忽略.

    第一个有当做数字处理的行上面的列会主动与数字列匹配,如果匹配不完全,就将上面的行当成一个字符串处理.

    经过以上处理后的结果存入a中

    如:对于 a w 3

    4 5 5

    3 4 d读进a的数据为a.textdata='a w','4 5';a.data=3 3

    对于 a w e

    r 5 4

    4 5 7 a.textdata={'a' 'w' 'e';'r' ' ' ' ';'4' ' ' ' '};a.data={5 4;5 7}

    对于a w e

    4 5 6

    3 r t   a.textdata='a' 'w' 'e';a.data={4 5 6;3 NaN NaN}

    对于a w e

    4 5 6

    d 3 5 a.textdata='a' 'w' 'e';data=4 5 6

    对于a w

    4 5 6

    5 6 i a.textdata='a w';data={4 5 6;5 6 NaN}

    对于a w

    4 5

    4 5 6 a.textdata='a' 'w ';data={4 5;4 5}

    对于这种txt文档,从matalb中读取就简单多了

    例如test.txt文件,内容为“17.901 -1.1111 33.045

    17.891 -1.1286 33.045

    17.884 -1.1345 33.045”

    保存在D盘,则可以在command window中输入load D:\test.txt ,然后就会产生一个test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import data....../next/finish 也可产生一个叫test的数据文件。command window中输入:a=importdata('D:\test.txt') 按Enter 则显示

    二、中英文和数据如test1.txt

    “你好

    欢迎来到

    振动论坛

    vib.hit.edu.cn

    1 11 111 1111

    2 22 222 2222

    3 33 333 3333

    4 44 444 4444

    5 55 555 5555”保存为D:\abc4.txt

    这样的文件怎么读入数据呢?

    方法有多种,现举两个比较简单实用的。

    方法一:

    a=importdata('D:\abc4.txt');

    >> whos

    Name           Size                   Bytes Class

    data           5x4                      160 double array

    textdata       4x1                      300 cell array

    Grand total is 54 elements using 460 bytes

    >> a1=a.data

    a1 =

    1          11         111        1111

    2          22         222        2222

    3          33         333        3333

    4          44         444        4444

    5          55         555        5555

    >>a2=a. textdata

    a2 =

    '你好'

    '欢迎来到'

    '振动论坛'

    'vib.hit.edu.cn'

    方法二:[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)

    说明:%s可以是其他形式,跟读入的数据类型有关,比如这里也可以用%n,%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'

    因以字符串的形式读入,所以有''。

    ————————————————————————————————

    三、中文 数据 英文 混乱如test.txt

    你好

    1 11 111 1111

    欢迎来到

    2 22 222 2222

    振动论坛

    3 33 333 3333

    vib.hit.edu.cn

    4 44 444 4444

    5 55 555 5555

    说明:这种内容格式的文件用上面的方法是不行的。

    以下是由chinamaker编写的一种方法:

    fidin=fopen('test.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

    展开全文
  • MATLAB读取txt文件txt里面有字符串和数值两种类型mip版关注:96答案:4悬赏:30解决时间 2021-01-29 08:48已解决2021-01-28 15:04MATLAB读取txt文件txt里面有字符串和数值两种类型,将txt文件读入MATLAB里,并得到...

    MATLAB读取txt文件,txt里面有字符串和数值两种类型

    mip版  关注:96  答案:4  悬赏:30

    解决时间 2021-01-29 08:48

    3103479286ced1d1048bd0162dad773a.png

    已解决

    2021-01-28 15:04

    MATLAB读取txt文件,txt里面有字符串和数值两种类型,将txt文件读入MATLAB里,并得到一个矩阵。txt文件里面的数据如下:

    5.1,3.5,1.4,0.2,Iris-setosa

    4.9,3.0,1.4,0.2,Iris-setosa

    4.7,3.2,1.3,0.2,Iris-setosa

    4.6,3.1,1.5,0.2,Iris-setosa

    5.0,3.6,1.4,0.2,Iris-setosa

    5.4,3.9,1.7,0.4,Iris-setosa

    4.6,3.4,1.4,0.3,Iris-setosa

    5.0,3.4,1.5,0.2,Iris-setosa

    4.4,2.9,1.4,0.2,Iris-setosa

    4.9,3.1,1.5,0.1,Iris-setosa

    5.4,3.7,1.5,0.2,Iris-setosa

    4.8,3.4,1.6,0.2,Iris-setosa

    4.8,3.0,1.4,0.1,Iris-setosa

    4.3,3.0,1.1,0.1,Iris-setosa

    5.8,4.0,1.2,0.2,Iris-setosa

    5.7,4.4,1.5,0.4,Iris-setosa

    5.4,3.9,1.3,0.4,Iris-setosa

    5.1,3.5,1.4,0.3,Iris-setosa

    5.7,3.8,1.7,0.3,Iris-setosa

    5.1,3.8,1.5,0.3,Iris-setosa

    5.4,3.4,1.7,0.2,Iris-setosa

    5.1,3.7,1.5,0.4,Iris-setosa

    4.6,3.6,1.0,0.2,Iris-setosa

    5.1,3.3,1.7,0.5,Iris-setosa

    4.8,3.4,1.9,0.2,Iris-setosa

    5.0,3.0,1.6,0.2,Iris-setosa

    5.0,3.4,1.6,0.4,Iris-setosa

    5.2,3.5,1.5,0.2,Iris-setosa

    5.2,3.4,1.4,0.2,Iris-setosa

    4.7,3.2,1.6,0.2,Iris-setosa

    4.8,3.1,1.6,0.2,Iris-setosa

    5.4,3.4,1.5,0.4,Iris-setosa

    5.2,4.1,1.5,0.1,Iris-setosa

    5.5,4.2,1.4,0.2,Iris-setosa

    4.9,3.1,1.5,0.1,Iris-setosa

    5.0,3.2,1.2,0.2,Iris-setosa

    5.5,3.5,1.3,0.2,Iris-setosa

    4.9,3.1,1.5,0.1,Iris-setosa

    4.4,3.0,1.3,0.2,Iris-setosa

    5.1,3.4,1.5,0.2,Iris-setosa

    5.0,3.5,1.3,0.3,Iris-setosa

    4.5,2.3,1.3,0.3,Iris-setosa

    最佳答案

    5a97afa62b36fd861e6b502788eea4d1.png

    2021-01-28 16:37

    function fun()

    temdat=load('D:\test.txt');

    if temdat== -1

    ('Error opening the file');

    end

    A=[temdat(:,1),temdat(:,2),temdat(:,3))];

    全部回答

    2614961c76abb6c999072f792a3f74a3.png

    1楼

    2021-01-28 18:39

    如果没有答案,那就用其他的方法吧。

    可以先用ultraedit的 列模式 把后面的删了,然后再用matlab读入

    536ca794e18cf6af7c0411718caad02e.png

    2楼

    2021-01-28 17:44

    使用textscan函数。

    665e8fbf8c3b5e7b16d3833887b4dd28.png

    3楼

    2021-01-28 17:32

    你好!

    用csvread或者dlmread都能完成你的要求,textscan也能,但是需要指定格式

    如果对你有帮助,望采纳。

    我要举报

    如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

    点此我要举报以上信息!

    推荐资讯

    大家都在看

    展开全文
  • 这是我编写的一个小函数,用于解决永恒的麻烦,或者试图从一堆包含类似数据的文本文件中读取实验数据。 例如解决方案_001.txt 解决方案_002.txt . . . 解决方案_00457.txt 所有这些都具有相似的数据结构。 可以在...
  • for i=1:n %判断一行有没有相应的字符 if (tline(i)=='#') flag=0; break; end end if flag==1 % 如果是数字行,把此行数据写入文件 fprintf(fidtmp,'%s\n',tline); end end end fclose(fidin); fclose(fidtmp); ...

    我的数据类型是这样的:

    0.000000 0.000000 0.000000 144 144 144 [1 0] d-1

    0.000000 0.000000 0.000000 145 145 145 [2 0] d-1

    0.000000 0.000000 0.000000 73 73 73 [3 0] d-1

    0.000000 0.000000 0.000000 90 90 90 [4 0] d-1

    0.000000 0.000000 0.000000 140 140 140 [5 0] d-1

    0.000000 0.000000 0.000000 31 31 31 [6 0] d-1

    0.000000 0.000000 0.000000 152 152 152 [7 0] d-1

    0.000000 0.000000 0.000000 141 141 141 [8 0] d-1

    0.000000 0.000000 0.000000 142 142 142 [9 0] d-1

    0.000000 0.000000 0.000000 97 97 97 [10 0] d-1

    0.000000 0.000000 0.000000 14 14 14 [11 0] d-1

    0.000000 0.000000 0.000000 45 45 45 [12 0] d-1

    0.000000 0.000000 0.000000 193 193 193 [513 330] d-1

    -2.042475 -4.825477 32.254028 196 196 196 [514 330] d66

    -2.047885 -4.900263 32.753906 199 199 199 [515 330] d65

    -2.052787 -4.975761 33.258545 200 200 200 [516 330] d64

    0.000000 0.000000 0.000000 39 39 39 [1249 545] d-1

    0.000000 0.000000 0.000000 59 59 59 [1250 545] d-1

    0.000000 0.000000 0.000000 52 52 52 [1251 545] d-1

    1.#INF00 1.#INF00 1.#INF00 50 50 50 [1252 545] d0

    1.#INF00 1.#INF00 1.#INF00 59 59 59 [1253 545] d0

    1.#INF00 1.#INF00 1.#INF00 64 64 64 [1254 545] d0

    1.#INF00 1.#INF00 1.#INF00 65 65 65 [1255 545] d0

    1.#INF00 1.#INF00 1.#INF00 71 71 71 [1256 545] d0

    0.000000 0.000000 0.000000 76 76 76 [1257 545] d-1

    0.000000 0.000000 0.000000 81 81 81 [1258 545] d-1

    0.000000 0.000000 0.000000 78 78 78 [1259 545] d-1

    0.000000 0.000000 0.000000 75 75 75 [1260 545] d-1

    0.000000 0.000000 0.000000 73 73 73 [1261 545] d-1

    0.000000 0.000000 0.000000 68 68 68 [1262 545] d-1

    这样的数据长度大概有1000000以上,我要把所以的数字读出来。程序如下:

    clear all

    close all

    DispartyData = '1.txt';

    a1 = 1280*1024;

    tmpfile='tmp2.mat';

    fidin = fopen(DispartyData, 'r'); % 打开原始数据文件(.list)

    fidtmp=fopen(tmpfile,'w'); % 创建保存数据文件(不含说明文字)

    while ~feof(fidin) % 判断是否为文件末尾

    tline=fgetl(fidin); % 从文件读入一行文本(不含回车键)

    if ~isempty(tline) % 判断是否空行

    [m,n]=size(tline);

    flag=1;

    for i=1:n %判断一行中有没有相应的字符

    if (tline(i)=='#')

    flag=0;

    break;

    end

    end

    if flag==1 % 如果是数字行,把此行数据写入文件

    fprintf(fidtmp,'%s\n',tline);

    end

    end

    end

    fclose(fidin);

    fclose(fidtmp);

    [a,b,c,d,e,t,h,i,j] = textread(tmpfile,'%f %f %f %d %d %d [%d %d] d%d',a1);

    A = [a,b,c,d,e,t,h,i,j];

    delete(tmpfile);

    展开全文
  • 数据之前有几行是中文,然后才是数据,如何用MATLAB读取txt文件中标识符所对应的列啊,多谢指教了!文件大概是这样的:你好欢迎来到............sum1 sum2 sum3 sum41 11 111 11112 22 222 22223 33 333 33334 44...

    问题描述:

    想读取一个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文件的操作,旨在讲述常用的函数及其说明。
  • 将混合有字符串和数据的文件,在matlab中读取,提取数据信息。 运用脚本,适合批量读取,而非手动插入数据。
  • matlab中读取txt数据文件(txt文本文档)

    千次阅读 2020-06-15 13:53:38
    根据txt文档不同种类介绍不同的读取数据方法 ...可以在command window中输入load test.txt ,然后就会产生一个test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import data…/next/fi
  • 比如midi00041:2.33459 2.33459 2.33459 2.33459 2.33459 2.33459 2.33459 2.33459 2.33459 -0.665414 -0.665414 -0.665414 -0.665414 -0.665414 -0.665414 -0.665414 -0.665414 -0.665414 2.33459 2.33459 2.33459 ...
  • csv,虽然用Excel可以直接打开,但是在Matlab里面读取的时候,csvread和xlsread用法还是有些不同的%Get data from a specified region in a sheet other than thefirst sheet:Numeric=xlsread(‘c:\matlab\work\...
  • matlab读取txt某一行

    2021-05-05 06:27:35
    matlab 存储成为二进制还是文本文 件取决于 fopen 的方式,如果用 ...使用函数来读取文本数据 若要在命令行或在一个 M 文件中读取数据,必须使用 MATLAB 数据函数,函数的选择则是依据文本文件中数据的格式。 而且...
  • 振动论坛原版主eight的经典贴对于文本文件(txt)进行数据读取的技巧总结(经典的经典)由于本帖内容较多,部分转自他人的心得,因此,凡转贴的地方仅用“----转----”标注,原作者略去,在此对所有原作者表示感谢!...
  • 转载:matlab 逐行 读取 txt 文件

    千次阅读 2021-04-19 05:31:50
    转载自:http://blog.sciencenet.cn/blog-762216-1086021.html% The load function can be used to load txt file, in which each row has the same number of elements.% This script (read_line) is to read the ...
  • 文件大致如下:怎样读取 END OF HEADER之后的数据 并保存到新文件中呢2.10 OBSERVATION DATA G (GPS) RINEX VERSION / TYPEteqc2000Feb29 autorun 20050126 05:06:52UTCPGM / RUN BY / DATEMSWinN...
  • 1、matlab 如何读取文本文件今天需要做个matlab读取txt文件,在网上收集了下,查到了几篇不错的,总结一下,方便大家(包括me)使用:下面这个函数是取filein的第line行写入fileout的程序,如果想实现取特定几行...
  • 如果你想用 Matlab 读取文本文件,你需要知道它是什么编码:UTF-8(“现代”标准)或 ANSI(US-ASCII,“旧”标准)。 如果您有要自动读取文件,您不一定知道您必须猜测的编码。 这有时会导致您在 3 或 4 个...
  • 与 textscan 或 csvread 不同,delimread 无需格式字符串即可读取文本和数字数据。 可以用Excel A1格式指定范围,也可以用开始/结束行和列值指定范围。 该函数被优化为在第一次读取时忽略不需要的数据,而不是在...
  • MATLAB读取文本文件----textread

    万次阅读 2019-08-02 21:23:42
    读取文本文件中的数据;写入多个输出 注意 不推荐使用textread。请改用textscan。 语法 [A,B,C,...] = textread(filename,format) [A,B,C,...] = textread(filename,format,N) [...] = textread(...,param,value...
  • 如何用MATLAB读取文本文件

    千次阅读 2018-03-27 23:58:13
    MATLAB如何读取文本文件分析 –读大文本关键函数–:textread, textscan 1 textread函数 语法: [A, B, C, …] = textread(filename, format) [A, B, C, …] = textread(filename, format, N) ...
  • MATLAB读取txt文件的数据

    万次阅读 2018-03-19 21:41:00
     该函数只能加载仅含有数字的文本文件,如果文档夹杂着字母或者文字,就会报错。2、importdata Data = importdata("filename.txt"); 既可以读取数据又可以读取字符:Data.data矩阵里存放的是纯数字,...
  • 本方法同样适合读取十六进制和二进制以外的其他进制文件txt使用一个最简单的命令就可以读取 textread 这是一个十分有用,简便的函数(对于fopen fscanf而言)读取二进制txt文件:假如txt文档内容为0001 0010 0011 ...
  • matlab处理txt文本文件

    2021-04-18 08:44:07
    二进制文件文本文件的区别:将文件看作是由一个一个字节(byte) 组成的,那么文本文件中的每个字节的最高位都是0,也就是说文本文件使用了一个字节的七位来表示所有的信息,而二进制文件则是将字节的所有位都...
  • fid=fopen('scr_new.txt','wt'); %新建一个txt文件 phns=['src.txt']; %要读取的文档所在的路径 fpn=fopen(phns,'rt'); %打开文档 whilefeof(fpn)~=1 %用于判断文件指针p在其所指的文件...
  • MATLAB读取csv文件里面既有文本又有数字的文件怎么读取一.第一种方法用代码读取用代码读取:(1)如果你要读的文件里面都是数字的话,用csvread函数,它有三种方式读取,但是它的缺点就是只能读取全是数值的文件(简单...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,166
精华内容 2,066
关键字:

matlab读取txt文本文件中的字符

matlab 订阅