Matlab读取文件的一些小trick(textscan与 csvread)
2013-07-21 16:30
316 查看
做各种各样的实验,总会碰到各种形式的文件需要加载,特别是需要用到别人写好的数据文件时。什么textread, fread,frprintf, fopen,csvread各种用。虽然我已经用了有一些年头,可是当碰到一些有着不同形式的数据文件时,总要花上半天时间才能够勉强写出读文件的代码。比方说:
有一个文件是csv格式的,这时我就用到了Matlab中自带的函数,csvread,但是它里面有不同类型的数据,字符串、数字等,如:
name,tag,x00,y00,x01,y01,x02,y02,x03,y03
i000qa-fn,0000,-39,-28,-39,-61,-38,-88
i000qb-fn,0000,-78,-37,-83,-67,-80,-98
…………
而csvread只对数字有效,而我只用到第二行、第三列以后的数字,用下面的代码忽略前面的字符串内容:
后面两个参数分别指定起始行与列,默认为0。
我刚开始还用了个比较麻烦的办法,使用fopen来打开,然后使用fscanf来读,那叫一个累呀。
第二行以后的第一列i000qa-fn,i000qb-fn,……,这些字符串我也想读取出来。这里又使用了fopen来打开文件,然后:
textscan中第二个参数:'%s %*[^/n]',是指截取该行的字符串,后面的其它任何数字格式的内容统统忽略;
第三个参数:'delimiter', ',',表示每个子字符串的分隔符是‘,’,默认为空格。
有一个文件是csv格式的,这时我就用到了Matlab中自带的函数,csvread,但是它里面有不同类型的数据,字符串、数字等,如:
name,tag,x00,y00,x01,y01,x02,y02,x03,y03
i000qa-fn,0000,-39,-28,-39,-61,-38,-88
i000qb-fn,0000,-78,-37,-83,-67,-80,-98
…………
而csvread只对数字有效,而我只用到第二行、第三列以后的数字,用下面的代码忽略前面的字符串内容:
loc = csvread(loc_file, 1, 2); % loc_file是csv文件名
后面两个参数分别指定起始行与列,默认为0。
我刚开始还用了个比较麻烦的办法,使用fopen来打开,然后使用fscanf来读,那叫一个累呀。
第二行以后的第一列i000qa-fn,i000qb-fn,……,这些字符串我也想读取出来。这里又使用了fopen来打开文件,然后:
fgetl(fid); i = 1; while ~feof(fid) str = fgetl(fid); img_name(i) = textscan(str, '%s %*[^\n]', 'delimiter', ','); i = i + 1; end
textscan中第二个参数:'%s %*[^/n]',是指截取该行的字符串,后面的其它任何数字格式的内容统统忽略;
第三个参数:'delimiter', ',',表示每个子字符串的分隔符是‘,’,默认为空格。
相关文章推荐
- R语言读CSV、txt文件方式以及read.table read.csv 和readr(大数据读取包)
- R语言读CSV、txt文件方式以及read.table read.csv 和readr(大数据读取包)
- pandas.read_csv——分块读取大文件
- matlab读取csv文件数据
- matlab读取csv文件
- 如何用MATLAB读取csv文件
- Matlab:如何读取CSV文件以及如何读取带有字符串数据项的CSV文件
- pandas.read_csv——分块读取大文件
- 【小技巧】Matlab读取CSV文件
- matlab从txt/csv文件中读取一行
- Matlab:如何读取CSV文件以及如何读取带有字符串数据项的CSV文件
- matlab读取csv文件存在字符串的问题(2014.5.8)
- Error using xlsread (matlab 读取文件报错)
- matlab读取csv文件存在字符串的问题(2014.5.8)
- 使用pandas read_table读取csv文件的方法
- pandas read_csv 和 DictReader读取文件的区别
- Matlab读取CSV文件
- pandas的read_csv()函数读取的文件路径问题
- python中文件的读写——read_csv()读取文件
- matlab 批量读取execl(csv)文件