matlab 行 读取文件 跳过_MATLAB读取列数不一致的文件(1、跳过前面N行数据,2、读取每行列数不同数据)...

MATLAB常见的读取加载数据文件都是用load 、importdata之类比较多,该类方法多局限于文件数据每一行的列数都是相等的;

但是如果遇到的数据文件前面N行数据是英文或中文,剩下的是列数相等的数据,那这类导入方法有点不行了,例如数据文件长这样:

04e78817af0b5432007d61dcac6eedf8.png

我们要读取的是后面列数相同的浮点型数据,保存在一个矩阵中,需要跳过前面11行数据(这是一个点云文件,pcd格式),代码和结果如下:

TrFid = fopen(TrPath,'r'); % 路径

FormatString='%f %f %f %*[^\n]'; % 读取数据的类型

% 参数依次是 文件、数据类型、读取行数(可选)、跳过前面11行数据、空格为数据分割符

Ctr = textscan(TrFid, FormatString, NUM, 'HeaderLines', 11, 'delimiter', ' ');

Ctr = cell2mat(Ctr); % 转矩阵

fclose(TrFid);

2ce43a4627dcf794f636f4e255e900a6.png

当我们不需要跳过前面的N行数据,只是每一行的列数不一致,需要分开读取每一行并将每一行数据保存在单独的数组中,如数据文件长这样:

5302ab9f44ababb8b49925c89a97b5f8.png

代码和结果如下:

% matlab读取不同列的数据

clc;clear all;

str = 'D:\VS_Files\Lidar\Project2\cloud_point\train_sample\RGB_dataset_pcd\test.txt';

fid = fopen(str);

while ~feof(fid) % 判断有没有到文件结尾

tline = fgetl(fid); % 每读取完一行数据后,自动地位到下一行

a = str2num(tline)

if isempty(tline) % 判断该行是否为空

continue

end

end

fclose(fid);

a1b4c186e1e88b4e9137ea6fc90c22a7.png

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab中,fscanf函用于从文件读取数据,并根据指定的格式将其转换为相应的变量。fscanf的语法格式如下: A = fscanf(fileID, formatSpec) 或 A = fscanf(fileID, formatSpec, sizeA) 其中,fileID是文件标识符,可以使用fopen函打开文件并获取。formatSpec是格式说明符,用于指定读取数据格式。A是存储读取数据的变量。 举个例子,如果我们要从名为"字符串文件.txt"的文件读取数据,并将数据存储在一个32列的字符串矩阵A中,可以使用以下代码: fileID = fopen('字符串文件.txt'); formatSpec = '%s'; Asize = [3, 2]; A = fscanf(fileID, formatSpec, Asize); 这样,A就会存储从文件读取数据,并按照指定的行列大小进排列。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [matlab中的fscanf的用法](https://download.csdn.net/download/hljwangyanzhu/4288173)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Matlab中fscanf函的入门使用+例子展示](https://blog.csdn.net/weixin_43822624/article/details/105469327)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值