1、假如一个文件中既有字符串又有数值,而且我们在读取的时候既需要读取字符串也需要读取其中的数值,那么使用命令时matlab默认将其读出为元胞数组格式,即cell。假如我们有如下一个文件,命名为aaa.txt:输入如下命令,即得到一个cell:fid = fopen('aaa.txt','r');aa = textscan(fid,'%s');fclose(fid);
2、下面介绍一下cell 的生成和用法:cell与数组一样,都是含有各种元素。其中的元素可以是字符或字符串,也可以是数值或数组。比如我们建立如下数组:bb = {[1 2 3;4 5 6],'abcdefg';2,'a'};也可以通过如下命令建立同样的数组:aa = [1 2 3 ;4 5 6];bb = {aa,'abcdefg';2,'a'}
3、下面展示一下这一cell数组:cellplot(bb)
4、那么与数组一样,我们可以通过它的行列来找到想要的元素。如bb{1,1}的值与bb(1,1)的值相同,为:ans = 1 2 3 4 5 6
5、同样可以提取cell中的数据,比如上述bb的第一个数据为一个数组,那么aa = bb{1,1}的结果为:aa=1 2 3 4 5 6
6、假设我们使用第一曰搬嚏嘀步的结果,可以将整个数据全部输入到一个cell中,然后使用循环命令将需要的数据提取出来。步骤一中是数组中还包含数组,我们需要第8,9;13,14;18,19殪讧唁跬等行的数据,具有一定的规律,那么可以使用:jj = 8;ii = 1;while jj <= 7000cc{ii,1} = aa{1,1}(jj);cc{ii,2} = aa{1,1}(jj+1);jj = jj+5;ii = ii+1;end依次提取出需要的数据。
7、当然最后在cc这个cell中,可能还不是我们需要的数据,这是度分秒格式,我们需要换算成度的数值格式,擒歙常泺那么可以使用以下命令:for jj = 1:length(cc)dd(jj,1) = str2num(cc{jj,1}{1,1}(1:2))+str2num(cc{jj,1}{1,1}(4:5))/60+str2num(cc{jj,1}{1,1}(7:13))/3600;dd(jj,2) = str2num(cc{jj,2}{1,1}(1:3))+str2num(cc{jj,2}{1,1}(5:6))/60+str2num(cc{jj,2}{1,1}(8:14))/3600;end然后就可以得到要的经纬度数据。