`
deepfuture
  • 浏览: 4412315 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:80131
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:70350
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:103593
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:286571
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:15054
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:67786
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:32292
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:46075
社区版块
存档分类
最新评论

matlab-textscan读带格式的数据文件

 
阅读更多

>> help textscan
 TEXTSCAN Read formatted data from text file or string.
    C = TEXTSCAN(FID,'FORMAT') reads data from an open text file identified
    by FID into cell array C. Use FOPEN to open the file and obtain FID.
    The FORMAT is a string of conversion specifiers enclosed in single
    quotation marks. The number of specifiers determines the number of
    cells in the cell array C.  For more information, see "Format Options."
   
    C = TEXTSCAN(FID,'FORMAT',N) reads data from the file, using the FORMAT
    N times, where N is a positive integer. To read additional data from
    the file after N cycles, call TEXTSCAN again using the original FID.
 
    C = TEXTSCAN(FID,'FORMAT','PARAM',VALUE) accepts one or more
    comma-separated parameter name/value pairs. For a list of parameters
    and values, see "Parameter Options."
 
    C = TEXTSCAN(FID,'FORMAT',N,'PARAM',VALUE) reads data from the
    file, using the FORMAT N times, and using settings specified by pairs
    of PARAM/VALUE arguments.
 
    C = TEXTSCAN(STR,...) reads data from string STR. You can use the
    FORMAT, N, and PARAM/VALUE arguments described above with this syntax.
    However, for strings, repeated calls to TEXTSCAN restart the scan from
    the beginning each time. (To restart a scan from the last position,
    request a POSITION output.  See also Example 3.)
 
    [C, POSITION] = TEXTSCAN(...) returns the file or string position at
    the end of the scan as the second output argument. For a file, this is
    the value that FTELL(FID) would return after calling TEXTSCAN. For a
    string, POSITION indicates how many characters TEXTSCAN read. 
 
    Notes:
 
    When TEXTSCAN reads a specified file or string, it attempts to match
    the data to the format string. If TEXTSCAN fails to convert a data
    field, it stops reading and returns all fields read before the failure.
 
    Format Options:
 
    The FORMAT string is of the form:  %<WIDTH>.<PREC><SPECIFIER>
        <SPECIFIER> is required; <WIDTH> and <PREC> are optional.
        <WIDTH> is the number of characters or digits to read.
        <PREC> applies only to the family of %f specifiers, and specifies
        the number of digits to read to the right of the decimal point.
 
    Supported values for SPECIFIER:
 
        Numeric Input Type   Specifier   Output Class
        ------------------   ---------   ------------
        Integer, signed        %d          int32
                               %d8         int8
                               %d16        int16
                               %d32        int32
                               %d64        int64
        Integer, unsigned      %u          uint32
                               %u8         uint8
                               %u16        uint16
                               %u32        uint32
                               %u64        uint64
        Floating-point number  %f          double
                               %f32        single
                               %f64        double
                               %n          double
 
        TEXTSCAN converts numeric fields to the specified output type
        according to MATLAB rules regarding overflow, truncation, and the
        use of NaN, Inf, and -Inf.  For example, MATLAB represents an
        integer NaN as zero.
 
        TEXTSCAN imports any complex number as a whole into a complex
        numeric field, converting the real and imaginary parts to the
        specified type (such as %d or %f). Do not include embedded white
        space in a complex number.
 
        Character Strings  Specifier  Details
        -----------------  ---------  -------------------------
        Strings              %s       String
                             %q       String, possibly double-quoted
                             %c       Single character, including delimiter
        Pattern-matching     %[...]   Read only characters in the brackets,
                                      until the first nonmatching
                                      character. To include ] in the set,
                                      specify it first: %[]...].
                             %[^...]  Read only characters not in the
                                      brackets, until the first matching
                                      character. To exclude ], specify it
                                      first: %[^]...].
 
        For each character (%c) specifier, TEXTSCAN returns a char array.
        Other string specifiers return a cell array of strings.
 
    Skipping fields or parts of fields:
 
        Specifier  Action Taken
        ---------  ------------
          %*...    Skip the field. TEXTSCAN does not create an output cell.
          %*N...   Ignore N characters of the field, where N is an integer
                   less than or equal to the number of characters in the
                   field.
 
        Alternatively, include literal text to ignore in the specifier.
        For example, 'Level%u8' reads 'Level1' as 1.
 
        TEXTSCAN does not include leading white-space characters in the
        processing of any data fields. When processing numeric data,
        TEXTSCAN also ignores trailing white space.
 
        If you use the default (white space) field delimiter, TEXTSCAN
        interprets repeated white-space characters as a single delimiter.
        If you specify a nondefault delimiter, TEXTSCAN interprets repeated
        delimiter characters as separate delimiters, and returns an empty
        value to the output cell.
 
    Parameter Options:
 
         Parameter      Value                               Default
         ---------      -----                               -------
         BufSize        Maximum string length in bytes      4095
 
         CollectOutput  If true, TEXTSCAN concatenates      0 (false)
                        consecutive output cells with the
                        same data type into a single array.
 
         CommentStyle   Symbol(s) designating text to       None
                        ignore. Specify a single string
                        (such as '%') to ignore characters
                        following the string on the same
                        line. Specify a cell array of two
                        strings (such as {'/*', '*/'}) to
                        ignore characters between the
                        strings. TEXTSCAN checks for
                        comments only at the start of each
                        field, not within a field.
 
         Delimiter      Field delimiter character(s)        White space
 
         EmptyValue     Value to return for empty numeric   NaN
                        fields in delimited files
 
         EndOfLine      End-of-line character               Determined
                                                            from file:
                                                            \n, \r, or \r\n
 
         ExpChars       Exponent characters                 'eEdD'
 
         Headerlines    Number of lines to skip. Includes   0
                        the remainder of the current line.
 
         MultipleDelimsAsOne                                0 (false)
                        If true, TEXTSCAN treats
                        consecutive delimiters as a single
                        delimiter. Only valid if you
                        specify the 'Delimiter' option.
 
         ReturnOnError  Determines behavior when TEXTSCAN   1 (true)
                        fails to read or convert.  If true,
                        TEXTSCAN terminates without error
                        and returns all fields read.  If
                        false, TEXTSCAN terminates with an
                        error and does not return an output
                        cell array.
 
         TreatAsEmpty String(s) in the data file to       None
                        treat as an empty value. Can be a
                        single string or cell array of
                        strings. Only applies to numeric
                        fields.
 
         Whitespace     White-space characters              ' \b\t'
 
    Examples:
 
    Example 1: Read each column of a text file.
        Suppose the text file 'mydata.dat' contains the following:
            Sally Level1 12.34 45 1.23e10 inf Nan Yes 5.1+3i
            Joe   Level2 23.54 60 9e19 -inf  0.001 No 2.2-.5i
            Bill  Level3 34.90 12 2e5   10  100   No 3.1+.1i
 
        Read the file:
            fid = fopen('mydata.dat');
            C = textscan(fid, '%s%s%f32%d8%u%f%f%s%f');
            fclose(fid);
 
        TEXTSCAN returns a 1-by-9 cell array C with the following cells:
            C{1} = {'Sally','Joe','Bill'}            %class cell
            C{2} = {'Level1'; 'Level2'; 'Level3'}    %class cell
            C{3} = [12.34;23.54;34.9]                %class single
            C{4} = [45;60;12]                        %class int8
            C{5} = [4294967295; 4294967295; 200000]  %class uint32
            C{6} = [Inf;-Inf;10]                     %class double
            C{7} = [NaN;0.001;100]                   %class double
            C{8} = {'Yes','No','No'}                 %class cell
            C{9} = [5.1+3.0i; 2.2-0.5i; 3.1+0.1i]    %class double
 
        The first two elements of C{5} are the maximum values for a 32-bit
        unsigned integer, or intmax('uint32').
 
    Example 2: Read a string, truncating each value to one decimal digit.
        str = '0.41 8.24 3.57 6.24 9.27';
        C = textscan(str, '%3.1f %*1d');
       
        TEXTSCAN returns a 1-by-1 cell array C:
            C{1} = [0.4; 8.2; 3.5; 6.2; 9.2]
 
    Example 3: Resume a text scan of a string.
        lyric = 'Blackbird singing in the dead of night';
        [firstword, pos] = textscan(lyric,'%9c', 1);      %first word
        lastpart = textscan(lyric(pos+1:end), '%s');      %remaining text
 
    For additional examples, type "doc textscan" at the command prompt.

 

=========

实验

>> fid=fopen('e:\readme.txt')

fid =

     4

>> c{:}

ans =

    'Apache'

>> c=textscan(fid,'%10s',2)

c =

    {2x1 cell}

>> c{:}

ans =

    'Lucene'
    'README'

>> fclose(fid)

ans =

     0

>>

 

>> c=textscan(fid,'%7.2f32')

c =

    [3x1 single]

>> c{:}

ans =

  1.0e+004 *

    0.1321
    3.2423
    0.1000

>>

跳过某个字段,使用百分号后跟*

>> fid=fopen('e:\readme.txt')

fid =

     7

>> c=textscan(fid,'%7.2f32 %*n')

c =

    [2x1 single]

>> fclose(fid)

ans =

     0

>> c{:}

ans =

  1.0e+003 *

    1.3210
    0.9999

readme.txt内容是:

1321 32423 999.89

 

 test1.txt内容是:

 

资产负债表   
2004年12月31日   
资 产 期末数 负债及所有者权益 期末数
流动资产:  流动负债: 
  货币资金 6865234.00    短期借款 120000.00
  应收票据 72120.00      应付票据 85500.00
  应收账款 38050.00    应付账款 80200.00
    减:坏账准备    预收账款 
    应收账款净额 38050.00    应付工资 
  其他应收款    应付福利费 8430.00
  预付账款 26600.00    应交税金 24420.00
  存 货 281950.00    应付股利 34000.00
  待摊费用 100.00    其他应付款 
  流动资产合计 7284054.00    预提费用 1600.00
长期投资:    流动负债合计 354150.00
 长期股权投资  长期负债: 
固定资产:    长期借款 804800.00
 固定资产原价 2370000.00    应付债券 
 减:累计折旧 41200.00    长期负债合计 804800.00
 固定资产净值 2328800.00   
  所有者权益: 
无形资产及其他资产:   实收资本 8900000.00
 无形资产 500000.00   资本公积 
 长期待摊费用   盈余公积 28290.40
 其他长期资产   未分配利润 25613.60
 无形资产及其他资产合计  500000.00   所有者权益合计  8953904.00
资产总计 10112854.00  负债及所有者权益总计 10112854.00

 

 >> fclose(fid)

ans =

     0

>> fid=fopen('e:\test1.txt')

fid =

     7

>> c1=textscan(fid,'%s',5)

c1 =

    {5x1 cell}

>> c1{:}

ans =

    '资产负债表'
    '2004年12月31日'
    '资'
    '产'
    '期末数'

>> c1=textscan(fid,'%s',5)

c1 =

    {5x1 cell}

>> c1{:}

ans =

    '负债及所有者权益'
    '期末数'
    '流动资产:'
    '流动负债:'
    '  货币资金'

>> c1=textscan(fid,'%s',5)

c1 =

    {5x1 cell}

>> c1{:}

ans =

    '6865234.00'
    '  短期借款'
    '120000.00'
    '  应收票据'
    '72120.00'

>>

 

>> c1=textscan(fid,'%s %d64 %s %d64 %s %d64',1)

将test1.txt的内容改为:

  货币资金 6865234.00    短期借款 120000.00
  应收票据 72120.00      应付票据 85500.00
  应收账款 38050.00    应付账款 80200.00
    减:坏账准备    预收账款 
    应收账款净额 38050.00    应付工资 
  其他应收款    应付福利费 8430.00
  预付账款 26600.00    应交税金 24420.00
  存 货 281950.00    应付股利 34000.00
  待摊费用 100.00    其他应付款 
  流动资产合计 7284054.00    预提费用 1600.00

 

读与括号中的字符不匹配的字符,直到遇上第一个匹配符为止

%[^...]
>> c1=textscan(fid,'%s %[^\n]')

c1 =

    {10x1 cell}    {10x1 cell}

>> c1{:}

ans =

    '  货币资金'
    '  应收票据'
    '  应收账款'
    '减:坏账准备'
    '应收账款净额'
    '  其他应收款'
    '  预付账款'
    '  存'
    '  待摊费用'
    '  流动资产合计'


ans =

    '6865234.00    短期借款 120000.00 '
    '72120.00      应付票据 85500.00 '
    '38050.00    应付账款 80200.00 '
    '  预收账款 '
    '38050.00    应付工资 '
    '  应付福利费 8430.00 '
    '26600.00    应交税金 24420.00 '
    '货 281950.00    应付股利 34000.00 '
    '100.00    其他应付款 '
    '7284054.00    预提费用 1600.00 '

>> c1{1}

ans =

    '  货币资金'
    '  应收票据'
    '  应收账款'
    '减:坏账准备'
    '应收账款净额'
    '  其他应收款'
    '  预付账款'
    '  存'
    '  待摊费用'
    '  流动资产合计'

>> c1{2}

ans =

    '6865234.00    短期借款 120000.00 '
    '72120.00      应付票据 85500.00 '
    '38050.00    应付账款 80200.00 '
    '  预收账款 '
    '38050.00    应付工资 '
    '  应付福利费 8430.00 '
    '26600.00    应交税金 24420.00 '
    '货 281950.00    应付股利 34000.00 '
    '100.00    其他应付款 '
    '7284054.00    预提费用 1600.00 '

 

 将text1.txt改为:

  货币资金,6865234.00 ,  短期借款,120000.00
  应收票据,72120.00 ,    应付票据,85500.00
  应收账款,38050.00 ,  应付账款,80200.00
    减:坏账准备,,  预收账款,
    应收账款净额,38050.00 ,  应付工资,
  其他应收款,,  应付福利费,8430.00
  预付账款,26600.00 ,  应交税金,24420.00
  存 货,281950.00 ,  应付股利,34000.00
  待摊费用,100.00 ,  其他应付款,
  流动资产合计,7284054.00 ,  预提费用,1600.00

 

体会一下空字段和分隔符

>> fclose(fid)

ans =

     0

>> fid=fopen('e:\test1.txt')

fid =

     7

>> c1=textscan(fid,'%s %d64 %s %d64','delimiter',',','emptyValue',-Inf)

c1 =

    {10x1 cell}    [10x1 int64]    {10x1 cell}    [10x1 int64]

>> c1{:}

ans =

    '  货币资金'
    '  应收票据'
    '  应收账款'
    '减:坏账准备'
    '应收账款净额'
    '  其他应收款'
    '  预付账款'
    '  存 货'
    '  待摊费用'
    '  流动资产合计'


ans =

              6865234
                72120
                38050
 -9223372036854775808
                38050
 -9223372036854775808
                26600
               281950
                  100
              7284054


ans =

    '  短期借款'
    '应付票据'
    '  应付账款'
    '  预收账款'
    '  应付工资'
    '  应付福利费'
    '  应交税金'
    '  应付股利'
    '  其他应付款'
    '  预提费用'


ans =

               120000
                85500
                80200
 -9223372036854775808
 -9223372036854775808
                 8430
                24420
                34000
 -9223372036854775808
                 1600

>>

 

再试一次

 > fid=fopen('e:\test1.txt')

fid =

     7

>> c1=textscan(fid,'%s %d64 %s %d64','delimiter',',','emptyValue',NaN)

c1 =

    {10x1 cell}    [10x1 int64]    {10x1 cell}    [10x1 int64]

>> c1{:}

ans =

    '  货币资金'
    '  应收票据'
    '  应收账款'
    '减:坏账准备'
    '应收账款净额'
    '  其他应收款'
    '  预付账款'
    '  存 货'
    '  待摊费用'
    '  流动资产合计'


ans =

              6865234
                72120
                38050
                    0
                38050
                    0
                26600
               281950
                  100
              7284054


ans =

    '  短期借款'
    '应付票据'
    '  应付账款'
    '  预收账款'
    '  应付工资'
    '  应付福利费'
    '  应交税金'
    '  应付股利'
    '  其他应付款'
    '  预提费用'


ans =

               120000
                85500
                80200
                    0
                    0
                 8430
                24420
                34000
                    0
                 1600

>>

 


>> fid=fopen('e:\test1.txt')

fid =

     7

>> c1=textscan(fid,'%s %d64 %s %d64','delimiter',',')

c1 =

    {10x1 cell}    [10x1 int64]    {10x1 cell}    [10x1 int64]

>> c1{:}

ans =

    '  货币资金'
    '  应收票据'
    '  应收账款'
    '减:坏账准备'
    '应收账款净额'
    '  其他应收款'
    '  预付账款'
    '  存 货'
    '  待摊费用'
    '  流动资产合计'


ans =

              6865234
                72120
                38050
                    0
                38050
                    0
                26600
               281950
                  100
              7284054


ans =

    '  短期借款'
    '应付票据'
    '  应付账款'
    '  预收账款'
    '  应付工资'
    '  应付福利费'
    '  应交税金'
    '  应付股利'
    '  其他应付款'
    '  预提费用'


ans =

               120000
                85500
                80200
                    0
                    0
                 8430
                24420
                34000
                    0
                 1600

>>

分享到:
评论

相关推荐

    matlab开发-类处理cif格式的文件

    它可能需要使用MATLAB的文本处理功能,如`textscan`函数来逐行读取文件,然后解析每一行的键值对。 2. **`getData`**:根据给定的键,返回对应的数据值。可能需要遍历所有数据块来查找匹配的键。 3. **`writeCif`**...

    Matlab读取数据文件

    本文将深入探讨如何使用Matlab处理数据文件,包括读取txt和.xls文件,以及进行三维最小二乘拟合。此外,我们还将讨论程序流程图在编程过程中的重要性。 首先,让我们来看看如何在Matlab中读取txt文件。文本文件(....

    matlab开发-非统一数据的文本文件

    7. **Excel兼容性**:虽然文件不是Excel格式,但MATLAB的 `xlsread` 和 `writetable` 函数可以帮助将数据导入或导出到Excel,这在与非MATLAB用户共享数据时很有用。 8. **错误处理**:在编写自定义导入函数时,要...

    matlab开发-CryoSat2DEMs

    - 使用MATLAB的`load`函数可以加载文本或二进制数据文件。 - `textscan`函数可以用于读取和解析自定义格式的二进制文件,这对于理解Cryosat-2数据格式至关重要。 2. **数据解析**: - Cryosat-2的原始数据通常以...

    matlab-use-txt-for-data-store.rar_TXT 数据_matlab txt_matlab TXT本

    在MATLAB中,文本文件(.txt)是一种常见的数据存储格式,因其通用性和易于处理而被广泛使用。本文将深入探讨如何在MATLAB环境中利用.txt文件进行数据的读取、写入以及存储,以帮助你更好地理解和应用这些技巧。 1....

    matlab中数据文件的处理

    ### MATLAB中数据文件的处理 #### 摘要 本文主要介绍了MATLAB中与数据文件输入输出(I/O)相关的常用命令及其应用场景,旨在展现MATLAB在处理数据文件方面的强大功能。MATLAB是一种广泛应用于科学计算和工程领域的...

    matlab开发-读取频谱分析跟踪文件

    首先,MATLAB是一款强大的数值计算软件,它提供了丰富的函数库,可以方便地读取各种类型的数据文件。在“matlab开发-读取频谱分析跟踪文件”的项目中,我们需要关注的主要文件是那些以`.dat`和`.csv`为扩展名的文件...

    通过MATLAB读取心电数据。hea-dat-art文件并显示在matlab上面.zip

    1. **读取HEA文件**:MATLAB没有内置函数来直接读取HEA文件,但可以通过文本读取函数如`textscan`来解析文件内容。你需要知道HEA文件的字段布局,然后根据这些布局来提取信息。 2. **解析DAT文件**:读取实际的ECG...

    matlab开发-利用Matlab实现工业数据分析

    MATLAB的`textscan`函数可以方便地读取这些文件,根据预设的格式参数解析数据,将其转化为MATLAB数组进行进一步处理。例如,`ArizCU12.5m.dat`可能是包含矿石检测数据的文本文件,通过`importcopper.m`脚本,我们...

    GRD格式的DEM文件读取写入Matlab程序.rar

    标题"GRD格式的DEM文件读取写入Matlab程序.rar"表明了这是一个解决特定问题的Matlab代码压缩包,它旨在帮助用户处理以GRD格式存储的DEM数据。描述中提到的“DSAA”可能代表文件的起始标识符,后面跟随的“行,列,经...

    matlab读取SAC类文件函数

    在MATLAB环境中,处理地震数据时经常会遇到SAC(Seismic Analysis Code)格式的文件,这是一种广泛用于地震学研究的数据存储格式。SAC文件包含了地震波形数据、元数据和其他相关信息。为了在MATLAB中有效地读取和...

    matlab开发-用Matlab可视化海洋数据

    1. **数据导入**:首先,你需要导入海洋学数据,这可以通过MATLAB的`readtable`、`textscan`或特定的海洋学数据读取函数完成,如`ncread`(用于NetCDF文件)。 2. **数据预处理**:数据可能需要进行清洗、平滑、...

    Matlab-input-output-function.zip_matlab输出

    - `load`:导入.mat、.txt、.csv等格式的数据文件到MATLAB工作空间。 - `save`:将工作空间变量保存为.mat文件。 - `importdata`:可以解析多种数据文件格式并将其转换为MATLAB变量。 - `csvread` & `csvwrite`...

    matlab-函数手册大全.rar_MATLAB 函数大全_Matlab函数_matlab 函数_matlab函数大全_matl

    `fopen`、`fclose`打开和关闭文件,`fprintf`、`fscanf`进行格式化读写,`load`、`save`导入导出数据,`textread`、`textscan`处理文本数据。 7. **系统接口**: MATLAB可以通过`system`命令调用操作系统命令,`...

    PSCAD中的波形导入到Matlab-PSCAD 介绍

    在Matlab中,我们可以使用`readtable`或`textscan`函数来读取文本格式的数据,或者使用`load`函数来加载二进制文件。例如,如果你导出的是CSV文件,代码可能如下: ```matlab data = readtable('PSCAD_output.csv')...

    matlab开发-已读csvfilecreatedWithTektronixtDS2000

    4. **错误处理**:为了确保程序的稳健性,`read_tektronix_csv.m`可能包含了错误检查和异常处理机制,例如检查文件是否存在、是否可读,以及数据格式是否符合预期。 5. **数据可视化**:MATLAB是强大的数据分析和...

    matlab-因子分析-源代码

    2. 加载数据:MATLAB提供了多种读取数据的函数,如`load`或`textscan`,用于将外部数据文件导入到工作空间。 3. 数据预处理:在进行因子分析之前,可能需要对数据进行标准化,确保所有变量在同一尺度上。MATLAB的`...

    实战matlab之文件与数据接口技术-源代码

    在"实战MATLAB之文件与数据接口技术"的源代码中,读者将有机会亲自动手实践这些功能,理解MATLAB如何高效地处理各种类型的数据文件,并与外部系统进行数据交换,从而提升自己的MATLAB编程技能。

    MATLAB读取显示txt格式点云(带数据)

    在MATLAB中处理文本文件,特别是点云数据,是一项常见的任务。点云数据通常用于3D重建、机器视觉和遥感等领域。以下是一份详细的知识点解析,介绍如何使用MATLAB来读取并显示txt格式的点云数据。 1. **读取TXT文件*...

    matlab开发-读写日志文件

    在MATLAB开发中,日志文件的读写是常见的任务,尤其在数据分析、调试和监控等场景中。Roehrig Engineering Shock 5.x是一款专业软件,用于模拟和分析冲击加载情况,它生成的日志文件可能包含了大量的实验数据和计算...

Global site tag (gtag.js) - Google Analytics