精华内容
下载资源
问答
  • MATLAB读取和写入txt文件https://blog.csdn.net/jisuanjiguoba/article/details/79997805txt文件中既有空格又有tab键,请问怎么正确读取txt里面内容?https://www.ilovematlab.cn/thread-529920-1-1.htmlMATLAB读取...

    MATLAB读取和写入txt文件

    https://blog.csdn.net/jisuanjiguoba/article/details/79997805

    txt文件中既有空格又有tab键,请问怎么正确读取txt里面内容?

    https://www.ilovematlab.cn/thread-529920-1-1.html

    MATLAB读取和写入Excel文件

    1. 读取Excel文件

    (a) 命令方式xlsread:

    读取命令:[data,text]  = xlsread(FileName, SheetName, Range);

    data保存的是数据单元格的值, text保存的是字符串单元格的内容。

    例如:[data,text]  = xlsread('C:\Test\test.xls'', 'testsheet', 'B2:D10');

    存储方式为矩阵,和Excel表格中的位置一致。

    如果Sheet内都是数据,可直接使用data = xlsread(文件名)。

    (b) 界面方式uiimport:

    在Matlab中输入命令:uiimport, 弹出如下窗口。不仅可以选择从文件导入,也可从剪贴板中导入。

    2ae354cb97f67c2a126076d6eadfd486.png2e39a93934f9637062c269be79351ec7.png

    2. 将MATLAB数据写入到Excel

    写入命令:xlswrite(FileName, Output, SheetName, Range)

    其中Output为要写入的数据,可以是矩阵也可以是cell类型

    例如:xlswrite('C:\test\text.xls', eye(3), 'Sheet1', 'A1:C3')

    展开全文
  • 一. 基本知识:1. 二进制文件与文本文件的区别:将文件...接着,第二个问题就是文件按照文本方式或者二进制方式打开,两者会有什么不同呢?其实不管是二进制文件也好,还是文本文件也好,都是一连串的0和1,但是打...

    一. 基本知识:

    1. 二进制文件与文本文件的区别:

    将文件看作是由一个一个字节(byte) 组成的,

    那么文本文件中的每个字节的最高位都是0,也就是说文本文件使用了一个字节中的七位来表示所有的信息,而二进制文件则是将字节中的所有位都用上了。这就是两者的区别;接着,第二个问题就是文件按照文本方式或者二进制方式打开,两者会有什么不同呢?其实不管是二进制文件也好,还是文本文件也好,都是一连串的0和1,但是打开方式不同,对于这些0和1的处理也就不同。如果按照文本方式打开,在打开的时候会进行translate,将每个字节转换成ASCII码,而以按照二进制方式打开的话,则不会进行任何的translate;最后就是文本文件和二进制文件在编辑的时候,使用的方式也是不同的。譬如,你在记事本中进行文本编辑的时候,你进行编辑的最小单位是字节(byte);而对二进制文件进行编辑的话,最小单位则是位(bit),当然我们都不会直接通过手工的方式对二进制文件进行编辑了。

    从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种:

    ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为:

    ASCII码: 00110101 00110110 00110111 00111000

    ↓ ↓ ↓ ↓

    十进制码: 5     6  7  8

    共占用4个字节。ASCII码文件可在屏幕上按字符显示,例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的内容。由于是按字符显示,因此能读懂文件内容。

    二进制文件是按二进制的编码方式来存放文件的。例如,数5678的存储形式为:00010110 00101110

    只占二个字节。二进制文件虽然也可在屏幕上显示,但其内容无法读懂。C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。因此也把这种文件称作“流式文件”。

    2.

    文本模式(textmode)和二进制模式(binarymode)有什么区别?

    流可以分为两种类型:文本流和二进制流。文本流是解释性的,最长可达255个字符,其中回车/换行将被转换为换行符“\n”,(如果以"文本"方式打开一个文件,那么在读字符的时候,系统会把所有的"\r\n"序列转成"\n",在写入时把"\n"转成"\r\n"

    )。二进制流是非解释性的,一次处理一个字符,并且不转换字符。

    注:

    \n一般会操作系统被翻译成"行的结束",即LF(Line-Feed)

    \r会被翻译成"回车",即CR(Cariage-Return)

    对于文本文件的新行,在UNIX上,一般用\n(LF)来表示,Mac上用\r(CR)来表示,

    Windows上是用\n\r(CR-LF)来表示。

    通常,文本流用来读写标准的文本文件,或者将字符输出到屏幕或打印机,或者接受键盘的输入;而二进制流用来读写二进制文件(例如图形或字处理文档),或者读取鼠标输入,或者读写调制解调器。如果用文本方式打开二进制文件,会把“0D 0A”自动变换成“\n”来存在内存中。写入的时候反向处理。而二进制方式打开的话,就不会有这个过程。但是,Unicode/UTF/UCS格式的文件,必须用二进制方式打开和读写。

    上述基础其实大可以略过,简言之,对用户来说:在 matlab

    中存储成为二进制还是文本文件取决于fopen的方式,如果用wt,则存储为文本文件,这样用记事本打开就可以正常显示了;如果用w则存储为二进制文件,这样用记事本打开会出现小黑方块,要正常显示的话,可以用写字板或UltraEdit等工具打开。

    二.

    Matlab的I/O文件操作使用技巧和总结:

    1. Matlab

    支持的I/O文件(对应“取/存”操作)类型:(所有文件I/O程序不需要特殊的工具箱)

    (注:从上表可以看到,matlab不支持doc格式的文档存取(因为doc文档包含很多格式控制符),请改用txt或者dat格式)

    2. Matlab 的I/O文件指南:

    以下是部分对应的中文译文:

    本技术支持指南主要处理:ASCII, binary, and MAT files.

    要得到MATLAB中可用来读写各种文件格式的完全函数列表,可以键入以下命令:

    help iofun

    MATLAB中有两种文件I/O程序:high level and

    low level.

    High level routines:

    包括现成的函数,可以用来读写特殊格式的数据,并且只需要少量的编程。

    Low level routines: 可以更加灵活的完成相对特殊的任务,需要较多的额外编程。

    High level routines 包括现成的函数,可以用来读写特殊格式的数据,并且只需要少量的编程。

    举个例子,如果你有一个包含数值和字母的文本文件(text file)想导入MATLAB,你可以调用一些low level

    routines自己写一个函数,或者是简单的用TEXTREAD函数。

    使用high level

    routines的关键是:文件必须是相似的(homogeneous),换句话说,文件必须有一致的格式。下面的段落描述一些high

    level file I/O routines并给出一些例子帮助理解概念。

    LOAD/SAVE

    主要的high level file I/O routines 是LOAD 和 SAVE函数。LOAD

    可以读MAT-file data或者用空格间隔的格式相似的ASCII data.

    SAVE可以将MATLAB变量写入MAT-file格式或者空格间隔的ASCII

    data。大多数情况下,语法相当简单。下面的例子用到数值由空格间隔的ASCII file sample_file.txt :

    1 5 4 16 8

    5 43 2 6 8

    6 8 4 32 1

    90 7 8 7 6

    5 9 81 2 3

    Example:

    用 LOAD and SAVE 读写数据

    CODE:

    % Load the file to the matrix, M :

    M = load('sample_file.txt')

    % Add 5 to M :

    M = M +5

    % Save M to a .mat file called 'sample_file_plus5.mat':

    save sample_file_plus5 M

    % Save M to an ASCII .txt file called 'sample_file_plus5.txt'

    :

    save sample_file_plus5.txt M -ascii

    UIGETFILE/UIPUTFILE

    UIGETFILE/UIPUTFILE是基于图形用户界面(GUI)的。会弹出对话框,列出当前目录的文件和目录,提示你选择一个文件。UIGETFILE让你选择一个文件来写(类似Windows

    ‘另存为’选项?)。用UIGETFILE,可以选择已存在的文件改写,也可以输入新的文件名。两个函数的返回值是所选文件名和路径。

    Example:

    用 UIGETFILE 从当前目录选择一个 M-file

    CODE:

    % This command lists all the M-files in the current directory

    and

    % returns the name and path of the selected file

    [fname,pname] = uigetfile('*.m','Sample Dialog Box')

    注意: UIGETFILE 一次只能选择一个文件。

    UIIMPORT/IMPORTDATA

    UIIMPORT是一个功能强大,易于使用的基于GUI的high level

    routine,用于读complex data files。文件也必须是homogeneous。

    IMPORTDATA形成UIIMPORT的功能,不打开GUI。可以将IMPORTDATA用于函数或者脚本中,因为在函数或者脚本中基于GUI的文件导入机制并不理想。下面的例子用到包含几行文件头和文本、数值数据的文件'sample_file2.txt' :

    This is a file header.

    This is file is an example.

    col1 col2 col3 col4

    A 1 4 612.000

    B 1 4 613.000

    C 1 4 614.000

    D 1 4 615.000

    Example: Using IMPORTDATA to read in a file with headers, text,

    and numeric data

    CODE:

    % This reads in the file 'sample_file2.txt' and creates a

    % structure D that contains both data and text data.

    % Note the IMPORTDATA command specifies a white space

    % as the delimiter of the file, but IMPORTDATA can usually

    % detect this on its own

    D =

    importdata('sample_file2.txt','') %

    原文有误?

    D = importdata('sample_file2.txt')

    可以通过访问结构D的数据和文本域,来看结构D中的真实值,例如输入:

    data = D.data

    text = D.textdata

    可以用UIIMPORT读同一个文件并得到同样的结构.

    注意: 对于 ASCII data, 你必须检验导入向导正确的识别了列分隔符。

    TEXTREAD/STRREAD

    TEXTREAD 是一个强大的动态high level

    routine,设计用来读ASCII格式的文本和/或数值数据文件。STRREAD除是从字符串而不是文件读以外,类似于TEXTREAD。

    两个函数可以用许多参数来改变其具体的工作方式,他们返回读入指定输出的数据。他们有效的提供给你一个

    “两全其美”的方法,因为他们可以用一个命令读入混合的ASCII和数值数据(high level

    routines的做法),并且你可以改变他们以匹配你特定的应用(如同low level routines做到的)。例子:

    CODE:

    Example 1: Using TEXTREAD to read in an entire file into a cell

    array

    % This command reads in the file fft.m into the cell array,

    file

    file =

    textread('fft.m','%s','delimiter','\n','whitespace','');

    CODE:

    Example 2: Using STRREAD to read the words in a line

    % This command uses the cell array created in Example 1 to

    % read in each word of line 28 in 'file' to a cell array,

    words

    words = strread(file{28},'%s','delimiter','')

    CODE:

    Example 3: Using TEXTREAD to read in text and numeric data from

    a file with headers

    % This command skips the 2 header lines at the top of the

    file

    % and reads in each column to the 4 specified outputs

    [c1 c2 c3 c4] = textread('sample_file2.txt','%s %s %s

    %s','headerlines',2)

    CODE:

    Example 4: Using TEXTREAD to read in specific rows of text and

    numeric data from a file

    % This command reads in rows B and C of the file. The

    'headerlines'

    % property is used to move down to the desired starting row and

    the

    % read operation is performed 2 times

    [c1 c2 c3 c4] = textread('sample_file2.txt',...

    '%s %s %s %s',2,'headerlines',4)

    CODE:

    Example operator

    [c2 c3 c4] = textread('sample_file2.txt','%*s %d %d

    %f','headerlines',3)

    DLMREAD/DLMWRITE/CSVREAD

    DLMREAD 和 DLMWRITE函数能够读写分隔的ASCII data,而不是用low level

    routines。他们比low level routines容易使用,Low level

    routines用几行代码实现的功能可以用DLMREAD/DLMWRITE简化成一行。

    CSVREAD用来读分隔符是逗号的文件,是DLMREAD的特殊情况。当读空格和Tab分隔的电子数据表文件时,DLMREAD特别有用。以'sample_file.txt'为例:

    CODE:

    Example 1: Using DLMREAD to read in a file with headers, text,

    and numeric data

    % This reads in the file 'sample_file2.txt' and creates a

    matrix, D,

    % with the numeric data this command specifies a white space as

    the

    % delimiter of the file

    D = dlmread('sample_file.txt','')

    CODE:

    Example 2: Using DLMREAD to extract the first 3 columns of the

    last 3 rows

    % This reads in the first 3 columns of the last 3 rows of

    % the data file 'sample_file.txt'into the matrix, D_partial.

    % 读文件 'sample_file.txt' 前3列后3行,到矩阵D_partial.

    D_partial = dlmread('sample_file.txt','',[2 0 4 2])

    CODE:

    Example 3: Using DLMWRITE to write a comma delimited file

    % This creates a file called 'partialD.txt' that consists of

    % the first 3 columns of the last 3 rows of data where each

    % element is separated by a comma

    dlmwrite('partialD.txt',D_partial,',')

    注意: 保证DLMREAD and DLMWRITE指定范围的指标从0开始,而不是从1开始。

    WK1READ/WK1WRITE

    WK1READ 用来读Lotus123 电子数据表文件的数据;WK1WRITE用来写矩阵到Lotus123 电子数据表文件。

    XLSREAD

    XLSREAD用来读Excel的数值和文本数据。

    三. 具体例子分析:

    Matlab网站用两个例子非常详尽地介绍了各个命令的基本用法,实际中,面对手头上的数据,如何选用合适的命令呢?以下结合几个示例给出一些总结,大家举一反三就可以了:

    1. 纯数据(列数相同):

    源文件:

    CODE:

    0 3866.162 2198.938 141.140

    1 3741.139 2208.475 141.252

    2 3866.200 2198.936 141.156

    3 3678.048 2199.191 141.230

    4 3685.453 2213.726 141.261

    5 3728.769 2212.433 141.277

    6 3738.785 2214.381 141.256

    7 3728.759 2214.261 141.228

    8 3748.886 2214.299 141.243

    9 3748.935 2212.417 141.253

    10 3733.612 2226.653 141.236

    11 3733.583 2229.248 141.223

    12 3729.229 2229.118 141.186

    解答:对于这个txt文件,由于各行列数相同,故简单地使用load,importdata均可。

    2.字段名(中、英文字段均可)+数据:

    源文件:

    CODE:

    CH0 CH1 CH2 CH3

    0.000123 0.000325 0.000378 0.000598

    0.000986 0.000256 0.000245 0.000698

    解答:由于是记录的形式,因此各行列数必相同(缺少部分列时请自行在文件中补上 Inf 或 NaN),故直接使用

    importdata 便可。

    3.注释(含有独立的数字串)+数据(列数相同):

    问题:这个文件有4列,但前6行是文字说明,4列数字是从第8行开始的.现在我想把这个文件的前2列和文字说明提出来组成一个新的dat文件

    源文件:

    CODE:

    Group

    2 12.02.2006 Limei

    Samples CH1 CH2 CH3

    0.000123 0.000325 0.000378 0.000598

    0.000986 0.000256 0.000245 0.000698

    目标文件:

    CODE:

    Group 2 12.02.2006 Limei

    Samples of datas: 50000

    CH0 CH1

    0.000123 0.000325

    0.000986 0.000256

    解答:由于注释中含有独立的数字串,且注释部分没有明显的格式,这时候用importdata,

    load等高级命令直接读取会失败,用 textread, dlmwrite

    等格式化命令也不太合适,因此只能使用低级命令进行读取。(当然了,可以跳过注释部分直接用高级命令读取数据,即:[a b c d] =

    textread(filename,'%f %f %f %f','headerlines',4);

    )。一个简单的、非通用的包含注释的读取方法如下:

    CODE:

    clc;clear;

    fid = fopen('exp.txt', 'r');

    fid_n=fopen('ex.dat','w');

    while ~feof(fid)

    tline=fgetl(fid);

    if ~isempty(tline)

    if

    double(tline(1))>=48

    &&

    double(tline(1))<=57 %数值开始

    a=strread(tline);

    a(3:4)=[];

    fprintf(fid_n,'%f %f\n',a);

    clear a;

    elseif

    double(tline(1))==67 %字母C开始

    =strread(tline,'%s

    %s %s %s');

    b=;

    fprintf(fid_n,'%s\n',b);

    clear b b1

    b2 b3 b4;

    else

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

    end

    else

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

    end

    end

    fclose(fid);

    fclose(fid_n);

    4. 注释(不含独立的数字串)+数据(列数相同):

    源文件:

    CODE:

    你好 abc

    欢迎来到 我们

    振动论坛

    vib.hit.edu.cn

    1 11 111 1111

    2 22 222 2222

    3 33 333 3333

    4 44 444 4444

    5 55 555 5555

    解答:直接用 importdata 便可

    注:有时候注释中含有独立的数字串也可以 importdata

    成功,不过得到的结果有可能不正确,建议这时候使用第3种情形的读取方式。

    5. 注释与数据混排:

    对此当然只能自己编程,举例:

    源文件:

    CODE:

    1 11 111 1111

    你好

    2 22 222 2222

    欢迎来到

    3 33 333 3333

    振动论坛

    4 44 444 4444

    vib.hit.edu.cn

    5 55 555 5555

    解答:

    CODE:

    function [data]=distilldata(infile)

    %功能说明:

    %将保存数据的原始文件中的数值数据读入到一个data变量中

    %使用说明:

    % infile——原始数据文件名;

    % data=数据变量

    tmpfile='tmp2.mat';

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

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

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

    tline=fgetl(fidin); %

    从文件读入一行文本(不含回车键)

    if ~isempty(tline) %

    判断是否空行

    =size(tline);

    flag=1;

    for i=1:n

    %判断一行中有没有字符(+-.Ee和空格键除外)

    if ~(tline(i)=='

    '|tline(i)=='-'|tline(i)=='.'|tline(i)=='E'...

    |tline(i)=='e'|tline(i)=='+'...

    |(double(tline(i))>=48&&double(tline(i))<=57))

    flag=0;

    break;

    end

    end

    if flag==1 %

    如果是数字行,把此行数据写入文件

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

    end

    end

    end

    fclose(fidin);

    fclose(fidtmp);

    data=textread(tmpfile);

    delete(tmpfile);

    另外,如果要求不高,也可以使用 textread

    函数跳过注释部分进行读取,不过前提是需要事先知道文件内容的结构(即哪行是数据、哪行是注释)

    6.各列数据的分离:

    源文件:

    CODE:

    0

    + 47038.7 1.05 09:26:07 C

    2

    + 46477.7 1.03 09:28:38 C

    4

    + 44865.7 1.04 09:28:48 C

    6

    + 41786.4 1.03 09:28:56 C

    8

    + 39896.0 0.97 09:29:03 C

    10

    + 37518.4 0.93 09:29:15 C

    12

    + 35858.5 0.92 09:29:30 C

    14

    + 46105.0 1.03 09:30:21 C

    16

    + 46168.6 6.89 09:30:30 C

    18

    + 48672.3 4.33 09:30:40 C

    20

    + 49565.7 0.49 09:30:48 C

    22

    + 49580.7 0.53 09:30:55 C

    24

    + 49602.3 0.84 09:31:03 C

    26

    + 49582.5 1.51 09:31:11 C

    28

    + 49577.0 1.39 09:31:19 C

    30

    + 49589.3 0.61 09:31:27 C

    32

    + 49578.3 1.06 09:31:29 C

    34

    + 49512.5 1.77 09:31:38 C

    解答:直接用 [a,b,c,d,e,f]=textread(yourfilename,'%d %c %f %f

    %s %c'); 便可

    四. 注意事项:

    1. 请在 matlab 中保持当前路径在该数据文件对应的目录下进行存取,否则,存取时请给出该数据文件的具体路径。

    2. 存取时,请给出该数据文件的全称(包括后缀名,读取mat文件时可省略)

    3. load data.txt和A=load(‘data.txt’)的区别请参阅精华贴:[原创]写给学习 matlab 的新手们

    4. 请根据读写需要来打开文件,即根据你的需要来指定 fopen 的 permission 属性为读或写。如果只用 a

    进行写入,就不能用 fread 读取。此时应该写完关闭文件,然后用 r 打开读取,或者直接用 a+

    进行同时读写操作。否则,会产生莫名其妙的问题!以下代码是一个错误的例子:

    CODE:

    filename='e.dat';

    fid=fopen(filename,'a');

    if fid<0

    error('fopen error');

    end

    s=[1 2 3 4;5 6 7 8];

    fwrite(fid,s,'float32')

    [dd ll]=fread(fid,inf,'float32');%把t中的数据全部读出,即s矩阵。

    fclose(fid);

    此时得到的dd, ll 是错误且无意义的!

    五. 其他相关问题:

    1. 连续读取多个文件的数据,并存放在一个矩阵中:

    (1) 首先是如何读取文件名:

    方法一:

    filename=dir(‘*.jpg’);

    那么第i个文件的文件名就可以表示为

    filename(i).name

    文件数量为:length(filename)

    方法二:

    先在Windows的 MSDOS(命令行)中使用以下命令生成一个list.txt文件:

    dir path\folder /on /b /s > path\list.txt

    举例:dir d:\list.txt

    然后在 matlab 中使用:

    filename = textread(sFileFullName,'%s');

    把所有文件名读取到list细胞矩阵中,最后对filename{i}便可得到各文件名。

    (2) 然后是读取文件名的数据并存储:

    假设每个文件对应的数据是m*n的,则:

    CODE:

    k = length(filename);

    Data = zeros(m,n,k);

    for ii = Data(:,:,ii) =

    yourreadstyle(filename{ii}); %yourreadstyle是对应的文件读取方式的函数

    end

    2.

    连续读取多个文件的数据,并存放在多个矩阵(以文件名命名)中:

    假设每个文件对应的数据是m*n的,则以上述第二种文件名读取方法为例:

    CODE:

    k = length(filename);

    for ii = D = yourreadstyle(filename{ii});

    eval_r([‘Data_’, num2str(ii), ‘ = D;’]);

    end

    3. 文件名命名问题:

    文件名为 abc00001,abc00002,... abc00009,abc00010,...

    abc00099,abc00100,...abc00879. 准备把这些文件名给放到一个数组里面去。

    解答:

    CODE:

    a=zeros(879,1);

    for k=1:879

    a(k) =

    sprintf('%.5d',k);

    end

    4.

    上述各种文件格式、类型自动识别问题:可以利用正则表达式来处理,使之通用性较强。例如使用以下代码可以自动处理上面提到了例1到例5各种情形,不过由于存在自动判断,对某些例子(如例1)效率自然要低一点,而对于另外的例子(如例3、例5)效率估计要高一点(少用了一个循环)。

    CODE:

    function [data]=distilldata_eight(infile)

    %功能说明:

    %将保存数据的原始文件中的数值数据读入到一个data变量中(自动判断数据行)

    %使用说明:

    % infile——原始数据文件名;

    % data=数据变量

    tmpfile='tmp2.mat';

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

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

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

    tline=fgetl(fidin); %

    从文件读入一行文本(不含回车键)

    if ~isempty(tline) %

    判断是否空行

    str = '[^0-9 | \. | \- |

    \s | e | E]'; %正则表达式为:该行中是否包含除 - . E e 数字 和 空白字符 外的其他字符

    start = regexp(tline,str,

    'once');

    if isempty(start)

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

    end

    end

    end

    fclose(fidin);

    fclose(fidtmp);

    data=textread(tmpfile);

    delete(tmpfile)

    5. 大量数据的读取问题:

    可以考虑使用循环分批读取(特别是在各数据是独立的时候),或者使用稀疏矩阵来实现。

    展开全文
  • Matlab写入txt文件

    万次阅读 2016-12-10 23:33:01
    matlabtxt文件

    matalb中打开文件:

    fid = fopen(文件名,‘打开方式’);

    说明:fid用于存储文件句柄值,如果fid>0,这说明文件打开成功。打开方式有如下选择:
    ‘r’:只读方式打开文件(默认的方式),该文件必须已存在。
    ‘r+’:读写方式打开文件,打开后先读后写。该文件必须已存在。
    ‘w’:打开后写入数据。该文件已存在则更新;不存在则创建。
    ‘w+’:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。
    ‘a’:在打开的文件末端添加数据。文件不存在则创建。
    ‘a+’:打开文件后,先读入数据再添加数据。文件不存在则创建。
    另外,在这些字符串后添加一个“t”,如‘rt’或‘wt+’,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。

    最基本的写入txt文件方法:

    %(matlab 与 C++ 类型指代相同)  %d-->int  
    展开全文
  • 因为我之前在matlab上做预处理的数据最后保存都是司空见惯的MAT格式,但ecgpuwave这个函数没法儿识别MAT格式,只支持TXT格式 一开始,我以为只是简单的用save函数,将保存格式改成“TXT”, 然而,Things won't be ...

    答主最近在做阿里天池心电大赛的数据集,这个数据集是用TXT保存的,打开是这样:

    文件中的 I II V1-V6 分别代表了ECG的八大导联,当然这不重要,在使用ecgpuwave之前需要将上面的标记 去除掉

    因为我之前在matlab上做预处理的数据最后保存都是司空见惯的MAT格式,但ecgpuwave这个函数没法儿识别MAT格式,只支持TXT格式

    一开始,我以为只是简单的用save函数,将保存格式改成“TXT”, 然而,Things won't be so easy. 打开后是这样,全是乱码

    原因是,Save函数保存 默认文件格式是 二进制 即使是改成了TXT文件,也依然是个二进制文件,

    那如何解决呢??

    很简单, 就是采用C中 朴素建立文件写入Data的方法,实现内容格式的修改,代码如下

    % 通过C中朴素写入Data方法实现内容格式的修改
    fid=fopen(string(FileName)+'.txt','wt');
    [m,n]=size(data);
    for i=1:1:m
        for j=1:1:n
            if j==n
                fprintf(fid,'%d\n',data(i,j));
            else
                fprintf(fid,'%d\t',data(i,j));
            end
        end           
    end
    
    fclose(fid);
    

     这里 data 代表变量矩阵。

    最后,我们打开TXT,成功!

    展开全文
  • MATLAB写入txt文件

    千次阅读 2019-11-25 10:18:04
    MATLAB写入txt文件 主要写了MATLAB写入txt文件的一些问题,下面的代码主要解决了一下问题: 写入txt的数据中间用英文逗号好隔开 输入的数据每三个为一行,每一行最后一个数据后的逗号没有 同一个文本在写入数据之后...
  • matlab读取txt文件并作图,txt为光谱仪测量的反射率数据,附上代码和反射率数据。
  • matlab读写txt文件

    千次阅读 2015-11-25 19:54:30
    1.打开txt文件 函数:fopen 参数:FILENAME(文件路径文件名),PERMISSION(打开模式) 用法:1. FID = FOPEN(FILENAME)  2.FID = FOPEN(FILENAME,PERMISSION) PERMISSION的选择:  'r' open file for ...
  • matlab读取txt文件

    千次阅读 2020-12-15 13:49:03
    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....
  • matlab 读写txt文件

    2014-12-17 17:16:00
    Matlab有着强大的数据处理功能,经常需要从... 你可以将txt的一些文本数据直接拷贝到matlab窗口,然后保存为mat文件,下次就可以直接采用load函数了。 (1)Load load 从Matlab的数据文件.mat中读取变量
  • MATLAB读取txt文件,批量生成txt文件

    千次阅读 2016-11-08 11:34:07
    首先贴一些txt文件数据: 1473142633083.jpg 52 770 226 1070 452 1473142633083.jpg 42 459 224 650 382 1473142633083.jpg 21 315 84 510 262 1473142634162.jpg 23 737 267 996 556 1473142634162.jpg 53 ...
  • MATLAB打开nc文件并读取nc文件数据

    千次阅读 2020-06-04 10:19:39
    MATLAB打开nc文件 ncdisp('E:\**\**.nc') 输入该命令后命令行窗口会显示该nc文件的基本信息 MATLAB读取nc文件 根据上一步中nc文件的基本信息提取nc文件的相应数据。 time=ncread('E:\**\**.nc','time') 将nc文件中...
  • matlab 载入txt文件

    千次阅读 2017-10-16 16:19:40
    TXT文件内容: 1 23 45 2 43 65 3 45 27 4 85 16 ........... n 78 79 请教如何读取TXT文档中1到n行,2到3列的内容,并赋值给矩阵A 我想得到矩阵A=[23 45; 43 65; 45 27;85 16;.........78 79;] A=load('a.txt'...
  • MATLAB操作TXT文件

    2016-01-25 15:22:21
    1、文件打开与关闭1)打开文件在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。fopen函数的调用格式为: fid=fopen(文件名,‘打开方式’) 说明:其中fid用于存储文件句柄值...
  • Matlab读取txt文件中的数据(使用textread函数)

    万次阅读 多人点赞 2018-04-18 22:13:45
    在使用Matlab处理数据时,我们经常需要读取txt文档,可以使用Matlab中强大的textread函数。它的基本语法是:[A,B,C,...] = textread(filename,format)[A,B,C,...] = textread(filename,format,N)其中filename就是...
  • 关于MATLAB读取txt文件的方法

    千次阅读 2019-11-25 16:57:41
    关于MATLAB读取txt文件的方法 一、如何读取一个文档下,多个txt文件? 一般读取的文件,命名都具有一定的规律,除去相同部分,剩下的变化按照时间、序号、某一特定的标志符等进行排列。 下面我们举个例子来操作。 ...
  • 掌握Matlab中文本文件的读写方式和基本输入输出函数。 二、实验内容 罗列Matlab文件操作的各种函数的用法,并举例说明。 创建矩阵,将其以不同的方式保存在文件中,再读取出来。如通过save函数,csvwrite函数、...
  • 之前也没接触过用MATLAB打开含有英文、数字和汉字的txt文件,结果网上查了一下,打开的文件内容中文全部显示乱码,折腾了大半天终于解决了。 一、常用打开方法: 1、Data = load("filename.txt"); 只支持仅含有...
  • merge.m2: %%%%Main程序%%%%%%3: %%%%%%4: %%%%%%本程序合并完各个子文件夹中的txt到主文件目录下,并且合并的文件以子文件夹名字命名5: %%%%%%同时,每次合并时,如果主文件夹已存在某一个子文件夹名字A的txt文件,...
  • matlab 读取txt文件名称

    千次阅读 2018-07-31 10:19:06
    %只读形式打开txt文件 file_t = fopen('mytxt.txt','r'); %以十进制读取,且读取的数据自动排成一列,排的顺序为:先从第一行左边到第一行右边,然后排第二行 A = fscanf(file_t,'%d'); %关闭文件 fclose...
  • Matlab Read Txt 文件

    千次阅读 2011-08-08 21:43:17
    fidin=fopen('test2.txt'); % 打开test2.txt文件  fidout=fopen('mkmatlab.txt','w');
  • matlab 读取txt文件数据

    千次阅读 2016-03-23 09:53:51
    MATLAB提供了一系列低层输入输出函数,专门用于文件操作。 1、文件打开与关闭 1)打开文件 在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。fopen函数的调用格式为: fid=...
  • MATLAB通过txt文件生成图像

    千次阅读 2019-12-12 20:42:51
    今天学习《计算机视觉基础》,作者的没给1.7的素材,然后自己造了个数据。分享一下。 % 创建一幅图像 a=imread('landscape.jpg'); % 读取landscape.jpg图片 ...%matlab由图片转换为矩阵是一列一列转的,t...
  • matlab导入txt文件数据并绘图1. 生成mat文件2. 用plot函数绘图 1. 生成mat文件 打开matlab, 这是用的是matlab R2019a 点击导入数据 找到自己想处理的的文件,打开 然后在matlab 工作区就可以看到这个mat文件,...
  • 1,data = load('路径');直接就可以将txt中的数据加载进matlab中。 2,textscan(fid,数据精度);读取的文件,在matlab中是元包的形式,不好操作,当然也要根据需要操作。
  • matlab读取txt文件大全

    万次阅读 2018-12-23 10:39:30
    文章参考:... 笔记留作个人科研使用,如有转载不允许,请告知,立刻删除. 文件读取方法 目标:读取每一行数字数目不同的纯文本文件。形如: 9 289734689 002874...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,129
精华内容 2,851
关键字:

matlab打开txt文件

matlab 订阅