matlab中元胞数组的使用
这里介绍matlab中元胞数组的使用。元胞数组既可以存储数值,也可以存储字符串。在matlab中使用比较方便。
操作方法
- 01
假如一个文件中既有字符串又有数值,而且我们在读取的时候既需要读取字符串也需要读取其中的数值,那么使用命令时matlab默认将其读出为元胞数组格式,即cell。 假如我们有如下一个文件,命名为aaa.txt: 输入如下命令,即得到一个cell: fid = fopen('aaa.txt','r');aa = textscan(fid,'%s');fclose(fid);
- 02
下面介绍一下cell 的生成和用法: cell与数组一样,都是含有各种元素。其中的元素可以是字符或字符串,也可以是数值或数组。比如我们建立如下数组: bb = {[1 2 3;4 5 6],'abcdefg';2,'a'}; 也可以通过如下命令建立同样的数组: aa = [1 2 3 ;4 5 6];bb = {aa,'abcdefg';2,'a'}
- 03
下面展示一下这一cell数组: cellplot(bb)
- 04
那么与数组一样,我们可以通过它的行列来找到想要的元素。 如bb{1,1}的值与bb(1,1)的值相同,为: ans = 1 2 3 4 5 6
- 05
同样可以提取cell中的数据,比如上述bb的第一个数据为一个数组,那么aa = bb{1,1}的结果为: aa = 1 2 3 4 5 6
- 06
假设我们使用第一步的结果,可以将整个数据全部输入到一个cell中,然后使用循环命令将需要的数据提取出来。 步骤一中是数组中还包含数组,我们需要第8,9;13,14;18,19等行的数据,具有一定的规律,那么可以使用: jj = 8;ii = 1; while jj <= 7000 cc{ii,1} = aa{1,1}(jj); cc{ii,2} = aa{1,1}(jj+1); jj = jj+5; ii = ii+1; end 依次提取出需要的数据。
- 07
当然最后在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 然后就可以得到要的经纬度数据。