MATLAB uigetfile()导入多个文档(格式为MCA)之后,怎么读取文档中的数据?

菜鸟一枚,刚学,编写一个小程序不会,希望高手帮忙,[FileName,PathName] = uigetfile('*.mca', 'Select all the dat-files ', 'MultiSelect', 'on'); %%选择所有mca文档,,怎么读入多个文档mac中的数据?
情况如此,希望高手帮忙
希望程序能够有一些说明,本人刚学MATLAB,一些程序可能看不懂,十分抱歉,麻烦各位高手了!万分感激

clear all
close all
clc;

di = dir('*.mca');
for i=1:length(di)
b=fopen(di(i).name);
for j=1:2147483646
t=fgetl(b);
if (t==-1)
break;
else
a{i,j}=t;
end
end
fclose(b);
end
文件和 .m程序 放一个文件夹下
元胞a是最终的数据 每一行代表一个文件,元胞是文件中的一行数据追问

你能把编程的思想解释一下么?有点看不懂,太麻烦您了!

追答

其实 读取的方法还是比较多 可以 importdata textread 等 文件操作的话 也可以指针操作 但考虑到你的数据类型是未知的 ,有可能会数据丢失 所以选择 按行读取 这样可以保证完整性。
思路的话 就是 先找到当前文件夹下的所有mca文件 。两个for循环 读出所有数据 。 外层for循环是为了依次读取每个文件 内存for是为了读文件内的每一行(截止数214748.。。 没有实际意义 只是刻意设的足够大 因为我不知道每个文件是多少行 , 但是因为我循环内部有判断终止循环的部分 所以不会影响到效率) fgetl是读行 如果读空的话 返回会是-1 所以我以此为跳出循环的标志

追问

能不能优化一下这个程序,我们自己来选择文件!而且直接读取M文件下面的MCA文件?十分麻烦您了!

追答

di = dir('*.mca');
for i=1:length(di)
b=fopen(di(i).name);
这部分改掉;
name={‘1.mca’,'7.mca'};需要操作的文件名 写这里面
for i=1:length(name)
b=fopen(name{i});

温馨提示:答案为网友推荐,仅供参考
相似回答