精华内容
下载资源
问答
  • [已编辑:]我有一个文件data2007a.csv,我将第一个连续的几行复制并粘贴(使用MacBook中的TextEdit)到新文件datatest1.csv进行测试:Nomenclature,ReporterISO3,ProductCode,ReporterName,PartnerISO3,PartnerName,...

    [已编辑:]我有一个文件data2007a.csv,我将第一个连续的几行复制并粘贴(使用MacBook中的TextEdit)到新文件datatest1.csv进行测试:

    Nomenclature,ReporterISO3,ProductCode,ReporterName,PartnerISO3,PartnerName,Year,TradeFlowName,TradeFlowCode,TradeValue in 1000 USD

    S3,ABW,0,Aruba,ANT,Netherlands Antilles,2007,Export,6,448.91

    S3,ABW,0,Aruba,ATG,Antigua and Barbuda,2007,Export,6,0.312

    S3,ABW,0,Aruba,CHN,China,2007,Export,6,24.715

    S3,ABW,0,Aruba,COL,Colombia,2007,Export,6,95.885

    S3,ABW,0,Aruba,DOM,Dominican Republic,2007,Export,6,11.432

    我想使用textscan将其读入MATLAB,仅使用第2,3,5列(从第二行开始)并编写以下代码

    clc,clear all

    fid = fopen('datatest1.csv');

    data = textscan(fid,'%*s %s %d %*s %s %*[^\n]',...

    'Delimiter',',',...

    'HeaderLines',1);

    fclose(fid);

    但我最后只得到第2,3和5列的第二行:

    e36d0a78393c32a56a6801b8ec015796.png

    然后我将第一行保留在data2007a.csv中,并选择其他几个保存为datatest2.csv:

    Nomenclature,ReporterISO3,ProductCode,ReporterName,PartnerISO3,PartnerName,Year,TradeFlowName,TradeFlowCode,TradeValue in 1000 USD

    S3,ABW,1,Aruba,USA,United States,2007,Export,6,1.392

    S3,ABW,1,Aruba,VEN,Venezuela,2007,Export,6,5633.157

    S3,ABW,2,Aruba,ANT,Netherlands Antilles,2007,Export,6,310.734

    S3,ABW,2,Aruba,USA,United States,2007,Export,6,342.42

    S3,ABW,2,Aruba,VEN,Venezuela,2007,Export,6,63.722

    S3,AGO,0,Angola,DEU,Germany,2007,Export,6,105.334

    S3,AGO,0,Angola,ESP,Spain,2007,Export,6,8533.125

    我写道:

    clc,clear all

    fid = fopen('datatest2.csv');

    data = textscan(fid,'%*s %s %d %*s %s %*[^\n]',...

    'Delimiter',',',...

    'HeaderLines',1);

    fclose(fid);

    data{1}

    它完全符合我的要求:

    585ca16397ccf936e329b89cacb8c42e.png

    38c774cfc8070b2f7dcc8c048087da48.png

    当我对原始数据文件data2007a.csv使用相同的代码时,它与第一种情况一样。

    出了什么问题,我该如何解决?

    [添加:]如果复制我的实验1,可以发现两种情况都有效且问题不存在!我真的不知道发生了什么。

    1对于“复制”,我的意思是复制并粘贴上面给出的数据并将其另存为两个新文件,例如datatest4a.csv和datatest4b.csv。我使用visdiff('datatest1.csv', 'datatest4a.csv')来比较两个文件并返回:

    2d00b02a050ab18646ff87203a1e5fba.png

    展开全文
  • matlab对文本文件的读写

    千次阅读 2019-08-13 15:21:46
    介绍Matlab读写文本文件的方法,包括load、dlmread、csvread、importdata、textscan、dlmwrite、csvwrite、save等函数的用法。 读文件 1. 纯数字 load test.txt % 导入文本数据,并保存在 test 变量; ...

    https://blog.csdn.net/u012366767/article/details/81565427

    介绍Matlab读写文本文件的方法,包括load、dlmread、csvread、importdata、textscan、dlmwrite、csvwrite、save等函数的用法。
    读文件
    1. 纯数字
    load test.txt % 导入文本数据,并保存在 test 变量;
     
    x= load('test.txt') % 导入文本数据,并保存到x变量;
    2. 科学计数法数字
    x = load('test.txt')
     
    x = dlmread('test.txt')
    3. 符号隔开的数字
    x= load('test.txt')     % 同一种符号隔开
     
    x = dlmread('test.txt')    % 同一种符号隔开
     
    x = csvread('test.txt')    % 多种符号隔开
    4. 包含头信息
    x = importdata('test.txt')
            x.data % 查看读取的数值型数据

            x.textdata % 查看读取的文本数据

            返回结构体变量、分隔符、头文件行数:

    [x, s, h] = importdata('examp02_07.txt');
            逗号作为分隔符,设置读取初始位置:

    x = dlmread('test.txt', ',', 2, 0)
            空格作为分隔符,头文件信息 2 行 :

    x = importdata('examp02_08.txt',' ',2)
     

    5. 文字数字文字数字混排
            

     

    fid = fopen('test.txt','r');    % 以只读方式打开
    line1 = fgets(fid);    % 读取文件的第1行
    line2 = fgets(fid);    % 读取文件的第2行
    % 从第3行开始读取数据,将读取的相同数据类型的连续元胞连接成一个元胞数组
    A = textscan(fid, '%f %f %f, 'CollectOutput', 1)
    line6 = fgets(fid);    % 读取文件的第6行
    line7 = fgets(fid);    % 读取文件的第7行
    B = textscan(fid, '%f %f %f', 'CollectOutput', 1)
    fclose(fid);
    fid = fopen('test.txt', 'r');
    C_data = textscan(fid, '%f%f%f', 'HeaderLines', 2);  % 从第3行开始读
    fclose(fid);
     

    6. 不整齐数字


    x = dlmread('test.txt')  % 用 0 补齐
    7. 复数
            

    x = dlmread('test.txt')
     
    fid = fopen('test.txt', 'r');    
    A = textscan(fid, '%f %*s %f %*s','delimiter',' ', 'CollectOutput', 1)
    fclose(fid);  
    8. 日期


    file_content= importdata('test.txt')    % 返回字符串元胞数组
    file_content= char(file_content)    % 将字符串元胞数组转为字符矩阵
    t = str2num(FileContent(:, 8:9))    % 提取字符矩阵的第8至9列,并转为数字
     
    fid = fopen('test.txt', 'r');   
    % 用'-,:'作分隔符
    A = textscan(fid, '%d %d %d %d %d %f %*s','delimiter','-,:','CollectOutput',1)
    fclose(fid);  
    9. 字符数字混排


    fid = fopen('test.txt');
    C = textscan(fid, '%s %s %f32 %d8 %u %f %f %s')    % 以指定格式读取文件中数据
    fclose(fid); 


    fid = fopen('test.txt', 'r');  
    A = textscan(fid, '%s %s %s %d %s %d %s %d %s', 'delimiter', ' ')
    fclose(fid); 
     
    fid = fopen('examp02_11.txt','r');  
    A = textscan(fid, '%*s %*s %*s %d %*s %d %*s %d %*s', 'delimiter', ' ','CollectOutput', 1)
    fclose(fid);
    写文件
    1. 写复数
    x = [1.455390 + 1.360686i, 8.692922 + 5.797046i; 3.509524 + 5.132495i, 4.018080 + 0.759667i];
    % 用逗号(',')作分隔符,用'\r\n'作换行符
    dlmwrite('test.txt', x, 'delimiter', ',', 'newline', 'pc')
     
    x = 10*rand(2, 6);
    fid = fopen('test.txt','wt');
    fprintf(fid,'%f+%fi, %f+%fi\n', x);
    fclose(fid);
    2. 写数字
    x = 10000*rand(3, 2);  
    fid = fopen('test.txt', 'wt');  
    fprintf(fid,'%f    %f    %f\n', x);  % 注意:文件里排布为2行3列,即行优先
    %fprintf(fid,'%e  %e  %e\n', x);
    fclose(fid);  
     
    空一行:dlmwrite('test.txt', x, '-append', 'roffset', 1, 'delimiter', ' ');
    分隔符:dlmwrite('test.txt', x, 'delimiter', '\t', 'precision', '%8.4f');
    分隔符:dlmwrite('test.csv', x, 'delimiter', ',', 'precision', '%8.4f', 'newline', 'pc');
    dlmwrite函数自动补零对齐;
     
    csvwrite('csvlist.dat', x);  % 逗号隔开 
     
    保存数据、间隔tabs宽度、追加数据:
    a=rand(5);
    save('a.txt','a','-ascii');  
    save('a.txt','a','-ascii','-tabs');  
    save('a.txt','a','-append','-ascii','-tabs');
    3. 随便写啥
    fid=fopen(Fid_FilePath,'wt');
    fprintf(fid,'%s\n',Fid_Header); % 写字符串
    fprintf(fid,'%10.4f  %10.4f  %10.4f  %10.4f\n', Data_Fid);  % 写数字
    fclose(fid);
    4. 追加续写
    w = 10*rand(1, 4); 
    x = 10*rand(1, 3);  
    y = 10*rand(1, 2);  
    z = 10*rand; 
    fid = fopen('test.txt', 'at');   
    fprintf(fid, '%-f    %-f    %-f    %-f\n', w);
    fprintf(fid, '%-f    %-f    %-f\n', x);
    fprintf(fid, '%-f    %-f\n', y);
    fprintf(fid, '%-f\n', z);
    fclose(fid);
    实例
        以下是待写入内容:

    Title = Peak File
    Num of Peaks = 2048
    Time(ms)   --   Amplitude--       Real  --     Imag
    0.0000  36061.1716 -31236.0000  18020.0000
    0.0500  36075.8757 -31327.0000  17891.0000
    0.1000  36169.9271 -31501.0000  17775.0000
    0.1500  36114.7887 -31541.0000  17591.0000
        代码如下:

    Title = 'Title = Peak File';
    Num = ['Num of Peaks =' num2str(length(Module))];
    Name = 'Time(ms)   --   Amplitude--       Real  --     Imag';
    [filename, pathname] = uiputfile('*.ddd');   % 随便一个后缀名
    FileName = [pathname, filename];
    dlmwrite(FileName, Title, 'delimiter', '')   % 不加 append 以覆盖同名文件
    dlmwrite(FileName, Num, '-append', 'delimiter', '')    % 追加续写
    dlmwrite(FileName, Name, '-append', 'delimiter', '')
    dlmwrite(FileName, [SampleTime, Module, DataReal, DataImaginary], '-append', 'delimiter', '\t', 'precision', '.4f')
     
     

    展开全文
  • [已编辑:]我有一个文件data2007a.csv,我将第一个连续的几行复制并粘贴(使用MacBook中的TextEdit)到新文件datatest1.csv进行测试:Nomenclature,ReporterISO3,ProductCode,ReporterName,PartnerISO3,PartnerName,...

    [已编辑:]我有一个文件data2007a.csv,我将第一个连续的几行复制并粘贴(使用MacBook中的TextEdit)到新文件datatest1.csv进行测试:

    Nomenclature,ReporterISO3,ProductCode,ReporterName,PartnerISO3,PartnerName,Year,TradeFlowName,TradeFlowCode,TradeValue in 1000 USD

    S3,ABW,0,Aruba,ANT,Netherlands Antilles,2007,Export,6,448.91

    S3,ABW,0,Aruba,ATG,Antigua and Barbuda,2007,Export,6,0.312

    S3,ABW,0,Aruba,CHN,China,2007,Export,6,24.715

    S3,ABW,0,Aruba,COL,Colombia,2007,Export,6,95.885

    S3,ABW,0,Aruba,DOM,Dominican Republic,2007,Export,6,11.432

    我想使用textscan将其读入MATLAB,仅使用第2,3,5列(从第二行开始)并编写以下代码

    clc,clear all

    fid = fopen('datatest1.csv');

    data = textscan(fid,'%*s %s %d %*s %s %*[^\n]',...

    'Delimiter',',',...

    'HeaderLines',1);

    fclose(fid);

    但我最后只得到第2,3和5列的第二行:

    e36d0a78393c32a56a6801b8ec015796.png

    然后我将第一行保留在data2007a.csv中,并选择其他几个保存为datatest2.csv:

    Nomenclature,ReporterISO3,ProductCode,ReporterName,PartnerISO3,PartnerName,Year,TradeFlowName,TradeFlowCode,TradeValue in 1000 USD

    S3,ABW,1,Aruba,USA,United States,2007,Export,6,1.392

    S3,ABW,1,Aruba,VEN,Venezuela,2007,Export,6,5633.157

    S3,ABW,2,Aruba,ANT,Netherlands Antilles,2007,Export,6,310.734

    S3,ABW,2,Aruba,USA,United States,2007,Export,6,342.42

    S3,ABW,2,Aruba,VEN,Venezuela,2007,Export,6,63.722

    S3,AGO,0,Angola,DEU,Germany,2007,Export,6,105.334

    S3,AGO,0,Angola,ESP,Spain,2007,Export,6,8533.125

    我写道:

    clc,clear all

    fid = fopen('datatest2.csv');

    data = textscan(fid,'%*s %s %d %*s %s %*[^\n]',...

    'Delimiter',',',...

    'HeaderLines',1);

    fclose(fid);

    data{1}

    它完全符合我的要求:

    585ca16397ccf936e329b89cacb8c42e.png

    38c774cfc8070b2f7dcc8c048087da48.png

    当我对原始数据文件data2007a.csv使用相同的代码时,它与第一种情况一样。

    出了什么问题,我该如何解决?

    [添加:]如果复制我的实验1,可以发现两种情况都有效且问题不存在!我真的不知道发生了什么。

    1对于“复制”,我的意思是复制并粘贴上面给出的数据并将其另存为两个新文件,例如datatest4a.csv和datatest4b.csv。我使用visdiff('datatest1.csv', 'datatest4a.csv')来比较两个文件并返回:

    2d00b02a050ab18646ff87203a1e5fba.png

    展开全文
  • %过滤前两行并过滤后三列,只读入第一列 C_data0 = textscan(fileID,’%d %*f %*f %*f’, ‘headerlines’, 2); %等同上面一句 C_data0 = textscan(fileID,’%d %*[^\n]’, ‘headerlines’, 2); fclose(fileID); %...

    %example.txt内容:

    Student_ID  | Test1  | Test2  | Test3

    1          91.5    89.2    77.3

    2          88.0    67.8    91.0

    3          76.3    78.1    92.5

    4          96.4    81.2    84.6

    %%%%%%%%%%%%%%%%%%%

    fileID = fopen(‘example.txt’);

    formatSpec = ‘%s’;

    N = 4;

    %将文件头一行的数据名称读入

    C_text = textscan(fileID,formatSpec,N,’Delimiter’,’|’);

    C_data0 = textscan(fileID,’%d %f %f %f’);

    %%%%%%%%%%%%%%%%%%%%%

    fileID = fopen(‘example.txt’);

    %过滤前两行,按格式读入四列数据

    C_data0 = textscan(fileID,’%d %f %f %f’, ‘headerlines’, 2);

    %%%%%%%%%%%%%%%%%%%%%%

    fileID = fopen(‘example.txt’);

    %过滤前两行并过滤后三列,只读入第一列

    C_data0 = textscan(fileID,’%d %*f %*f %*f’, ‘headerlines’, 2);

    %等同上面一句 C_data0 = textscan(fileID,’%d %*[^\n]’, ‘headerlines’, 2);

    fclose(fileID);

    %name.txt内容:

    “Smith, J.”,”M”,38,71.1

    “Bates, G.”,”F”,43,69.3

    “Curie, M.”,”F”,38,64.1

    “Murray, G.”,”F”,40,133.0

    “Brown, K.”,”M”,49,64.9

    %%%%%%%%%%%%%%%%%%%%

    fileID = fopen(‘names.txt’,’r’);

    %读取第一列和最后一列过滤中间两列,%q to read a string enclosed by double quotation marks “string”

    % %q读取由双引号括起来的字符串 “string”

    C = textscan(fileID,’%q %*q %*d %f’,’Delimiter’,’,’);

    fclose(fileID);

    %data2.csv内容:

    abc, 2, NA, 3, 4

    // Comment Here

    def, na, 5, 6, 7

    fileID = fopen(‘data2.csv’);

    C = textscan(fileID,’%s %n %n %n %n’,’Delimiter’,’,’,…

    ‘TreatAsEmpty’,{‘NA’,’na’},’CommentStyle’,’//’);

    fclose(fileID);

    xls行数较多时公式下拉很慢,如何快速填充公式:

    按下SHIFT+CTRL+方向键下,再在编辑栏里输入公式,再按下CTRL+回车;

    excel怎么样批量将unix时间戳转化为北京时间:

    选中其中一个单元格,输入公式

    =(A2+8*3600)/86400+70*365+19, 如果单元格中的时间单位是ms则 =(A2/1000+8*3600)/86400+70*365+19)

    其中,A2是要转化的时间戳的单元格。

    展开全文
  • Matlab中textscan函数用法

    千次阅读 2020-12-24 17:32:38
    textscan函数从文本文件或字符串读取格式化数据。 语法 C = textscan(fileID,formatSpec) C = textscan(fileID,formatSpec,N) C = textscan(chr,formatSpec) C = textscan(chr,formatSpec,N) C = textscan(__...
  • matlab中textscan跳行使用

    千次阅读 2020-12-29 09:50:56
    Matlab的textscan指令2010-03-0211:33:10最近在玩学长给的一个资料档,里头有文字和数据混何在一起,要用Matlab来读取.要是以前的话,大概就很笨的用手动的方式把文字去掉,再让Matlab来读.不过最近才发现Matlab7的一个...
  • MATLAB——textscan

    2016-07-29 11:27:00
    title = textscan(fid,'%s %s %s %s %s %s %s %s %s %s %s %s %s %s',1,'delimiter',','); %%%%%n——double %s——str%%%注意读取位置数据所在位置 fclose( fid ); %%读取数据 fid = fopen('D:\work\task\task_...
  • 【小技巧】Matlab读取CSV文件

    千次阅读 2021-03-02 20:56:35
    第二种:M = CSVREAD(‘FILENAME’,R,C) ,读取csv文件中从第R-1行,第C-1列的数据开始的数据,这对带有头文件说明的csv文件(如示波器等采集的文件)的读取是很重要的。 第三种:M = CSVREAD(‘FILENAME’,R,C,RNG),...
  • MATLABtextscan函数中参数delimiter的使用

    万次阅读 2016-01-13 20:19:52
    C = textscan(fid, '%f %f %f %f %u32 %f', 'delimiter', ',','EmptyValue', -Inf); fclose(fid); textscan returns a 1-by-6 cell array C with the following cells: C{1} = [1; 7] class double C{2} ...
  • matlab读取csv文件

    千次阅读 2016-07-17 20:23:58
    1、用csvread函数 ...第二种:M = CSVREAD(‘FILENAME’,R,C) ,读取csv文件中从第R-1行,第C-1列的数据开始的数据,这对带有头文件说明的csv文件(如示波器等采集的文件)的读取是很重要的。 第三种:M = C
  • Matlab读取CSV文件

    千次阅读 2019-05-06 11:35:19
    Matlab读取CSV文件 1、用csvread函数 注意:csvread函数只试用与用逗号分隔的纯数字文件 第一种:M = CSVREAD(‘FILENAME’) ,直接读取csv文件的数据,并返回给M 第二种:M = CSVREAD(‘FILENAME’,R,C) ,读取csv...
  • csvdata = textscan(fid, '%f %d %d %d %d %d %d %s %s %s %s %s %s %s %s','delimiter', ','); %fid>0表示打开成功,f浮点型,d整数型,s字符串型(实现数据以不同形式导入matlab中) %读取数据 返回为cell类型 ...
  • MATLAB 读取csv

    千次阅读 2016-07-17 20:33:39
    1、用csvread函数 ...第二种:M = CSVREAD(‘FILENAME’,R,C) ,读取csv文件中从第R-1行,第C-1列的数据开始的数据,这对带有头文件说明的csv文件(如示波器等采集的文件)的读取是很重要的。 第三种:M = C
  • CSV,逗号分开的文件,如果能快速...1、 只有数据的CSV文件,CSV file that includes only numbers.As an example, create a text file, named as 'data.csv' if you prefer, which includes the following data wit...
  • 这个链接基本上可以解决所遇到的问题,我...[x, y] = textread('data_test.csv' ,'%*s %*s %*s %*s %*s %f %f %*[^\n]','delimiter', ',') 应当是直接跳过字符串语句,将两列数据分别读入到x,y中,师兄威武。
  • matlab从csv文件中读取时间转换异常

    千次阅读 2017-11-04 02:50:23
    matlab 从 csv 文件中读取时间转换异常最近一段时间一直在研究 matlab 读取各种数据,自以为文件读取的水平还行。可是,昨天,帮朋友读取一个 csv 文件时,时间转换却让我感到非常奇怪。无情打脸,滑稽。本文所需要...
  • I am trying to read in a .csv file with MATLAB. Here is my code:csvread('out2.csv')This is what out2.csv looks like:03/09/2013 23:55:12,129.32,129.3303/09/2013 23:55:52,129.32,129.3303/09/2013 23:56:0...
  • 在MATLAB中从CSV文件读取日期和时间 datetime, M01, M02, M03, M04, M05, M06 8/15/2009 0:00, 5.8, 7.8, 7.8, 7.3, 0, 7.9 8/15/2009 0:10, 7.1, 8.1, 8.1, 7.7, 0, 8.1 8/15/2009 0:20, 6.8, 7.4, 7.6, 7.1, 0, ...
  • 【Matlab学习手记】文件读写完整版

    万次阅读 多人点赞 2018-08-11 09:54:04
    介绍Matlab读写文本文件的方法,包括load、dlmread、csvread、importdata、textscan、dlmwrite、csvwrite、save等函数的用法。 读文件 1. 纯数字 load test.txt % 导入文本数据,并保存在 test 变量; x= ...
  • I am trying to read a CSV file in matlab. I just want to read the second column but the code below prints out everything on CSV file. What parameters or functions I have to introduce to make it read ....
  • textscan中第二个参数:'%s %*[^/n]',是指截取该行的字符串,后面的其它任何数字格式的内容统统忽略; 第三个参数:'delimiter', ',',表示每个子字符串的分隔符是‘,’,默认为空格。  
  • 1,读取当前文件夹下所有csv文件,并将每个文件中的特定数据组成一个矩阵,并组合。 file=dir('KH\*.csv'); %读取KH文件夹下全部csv文档 [~, ind] = sort([file(:).datenum], 'ascend'); %读物的文件按照时间...
  • Matlab读取csv字符串数组(Matlab read csv string array)我有一个名为Book2.csv的逗号分隔数据集我想提取内容。 内容是496024x1字符串数组(正常,海王星,蓝精灵)。我试过:[text_data] = xlsread('Book2.csv');但它...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 132
精华内容 52
关键字:

textscan(fid,'%*s)csv