首页 > 其他分享 >matlab中读取txt数据文件(txt文本文档)

matlab中读取txt数据文件(txt文本文档)

时间:2023-11-07 11:35:11浏览次数:27  
标签:文本文档 DDAA 01 matlab 2.24609 test txt s%

根据txt文档不同种类介绍不同的读取数据方法

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

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

例如test.txt文件,内容为

17.901 -1.1111 33.045
17.891 -1.1286 33.045
17.884 -1.1345 33.045

可以在command window中输入load test.txt ,然后就会产生一个test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import data....../next/finish 也可产生一个叫test的数据文件。

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

你好
欢迎来到
论坛
edu.cn
1 11 111 1111
2 22 222 2222
3 33 333 3333
4 44 444 4444
5 55 555 5555


这样的文件怎么读入数据呢?
方法有多种,现举两个比较简单实用的。

方法一:
file/import data....../next/finish
>> 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 =

    '你好'
    '欢迎来到'
    '论坛'
    '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
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

---------------------------------------------------------------

我的txt数据里既有数字又有字符串,形式为:
0.129515 DDAA  01  2.24609 94.50000  98
0.130434 DDAA  01  2.24609 96.30000  9A
0.131441 DDAA  01  2.24609 97.20000  9B
0.132448 DDAA  01  2.24609 99.00000  9D
0.133507 DDAA  01  2.24609 100.80000  9F
0.134515 DDAA  01  2.24609 101.70000  A0
............
我只想要第一列,第四列,第五列。
也就是0.129515    2.24609    94.50000 这3列数,
怎样导入matlab啊?

 

假设数据在data.txt里,且位于当面matlab路径里,用下面这句就可以了
[col1,col2,col3]=textread('data.txt','%f %*s %*d %f %f %*s',-1);

标签:文本文档,DDAA,01,matlab,2.24609,test,txt,s%
From: https://blog.51cto.com/emanlee/8228750

相关文章

  • matlab程序性能优化与混合编程技术介绍
    matlab程序代码优化,性能优化 Matlab是一种强大的计算工具,方便的矩阵运算与工具箱为编程人员提供了极大的便利。但是其性能的缺失使得处理一些大计算量问题时显得效率不高,matlab程序的优化应从几个方面展开:1.矩阵提前分配空间,矩阵第一次使用之后避免改变矩阵的维数。2.尽量使用矩......
  • Matlab命令集--常用字符串函数
    Matlab命令集--常用字符串函数常用函数eval :运行字符串表示的表达式char :将数组变成字符串double:将数字字符串变成数字字符串操作deblank:去掉字符串末尾的空格findstr:查找字符串lower  :转换为小写strcat :字符串连接组合strcmp :字符串比较strcmpi:字符串比较(......
  • (Lora训练)(承接midjourney数据修改)(建对应名称txt与删txt内部后缀,括号,数字与转换下划线)Lo
    importosimportredefcreate_txt_from_image():#请求用户输入文件夹地址root_folder=input("请输入图片所在文件夹的完整路径:")#判断路径是否存在ifnotos.path.exists(root_folder):print("路径不存在,请检查输入的地址。")return#用......
  • 【工具包使用】解析txt标注文件
    前言 codeimportosdefparse_onedata(data):print('data:',data)info=data['info']image=data['image']valid=data['valid']rotation=data['rotation']categories=data[&#......
  • matlab用Logistic逻辑回归建模和马尔可夫链蒙特卡罗MCMC方法分析汽车实验数据
    原文链接:http://tecdat.cn/?p=24103原文出处:拓端数据部落公众号 此示例说明如何使用逻辑回归模型进行贝叶斯推断。统计推断通常基于最大似然估计(MLE)。MLE选择能够使数据似然最大化的参数,是一种较为自然的方法。在MLE中,假定参数是未知但固定的数值,并在一定的置信度下进......
  • Matlab 2023a图文安装教程及下载
    MATLAB是由美国MathWorks公司出品的专业数学软件,用于算法开发,数据可视化,数据分析以及数值计算的高级技术计算语言和交互式环境,MATLAB是矩阵和实验室两个词的组合,意为矩阵工厂(矩阵实验室),主要包括MATLAB和Simulink两大部分。它将数值分析,矩阵计算,科学数据可视化以及非线性动态系统的......
  • 基于FPGA的Lorenz混沌系统verilog开发,含testbench和matlab辅助测试程序
    1.算法运行效果图预览   将vivado的仿真结果导入到matlab显示三维混沌效果:    2.算法运行软件版本vivado2019.2 matlab2022a 3.算法理论概述      洛伦兹混沌系统是一种非线性动力系统,最初由爱德华·洛伦兹(EdwardLorenz)于1963年引入,它的简单方......
  • m基于5G通信的超密集网络多连接负载均衡和资源分配算法matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要5G模型的基本结构如下所示:超密集网络是5G通信系统中的重要技术,是现在通信界的研究热点。系统中的每个小小区都是正交频分多址系统,共有TV个小小区,每个小小区使用个OFDMA子载波,信道增益为G。根据其结构图可知,当......
  • m基于5G通信的超密集网络多连接负载均衡和资源分配算法matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:    2.算法涉及理论知识概要        5G模型的基本结构如下所示:          超密集网络是5G通信系统中的重要技术,是现在通信界的研究热点。系统中的每个小小区都是正交频分多址系统,共有TV个小小区,每个小......
  • 线性代数 · 矩阵 · Matlab | 满秩分解代码实现
    背景-矩阵的满秩分解:若A为m×n矩阵,rank(A)=r,则存在Fm×r、Gr×n,使得A=FG。其中,F列满秩,G行满秩。求满秩分解的方法:得到A的行最简形式B;对于B里某列为1该列中其他元素为零的列,取A的对应列,组成F;取B的前r行组成G。function[F,G]=fullra......