matlab中元胞数组的使用

作者:追风筝的人 | 创建时间: 2023-07-05
这里介绍matlab中元胞数组的使用。元胞数组既可以存储数值,也可以存储字符串。在matlab中使用比较方便。...
matlab中元胞数组的使用

操作方法

假如一个文件中既有字符串又有数值,而且我们在读取的时候既需要读取字符串也需要读取其中的数值,那么使用命令时matlab默认将其读出为元胞数组格式,即cell。 假如我们有如下一个文件,命名为aaa.txt: 输入如下命令,即得到一个cell: fid = fopen('aaa.txt','r');aa = textscan(fid,'%s');fclose(fid);

下面介绍一下cell 的生成和用法: cell与数组一样,都是含有各种元素。其中的元素可以是字符或字符串,也可以是数值或数组。比如我们建立如下数组: bb = {[1 2 3;4 5 6],'abcdefg';2,'a'}; 也可以通过如下命令建立同样的数组: aa = [1 2 3 ;4 5 6];bb = {aa,'abcdefg';2,'a'}

下面展示一下这一cell数组: cellplot(bb)

那么与数组一样,我们可以通过它的行列来找到想要的元素。 如bb{1,1}的值与bb(1,1)的值相同,为: ans = 1     2     3     4     5     6

同样可以提取cell中的数据,比如上述bb的第一个数据为一个数组,那么aa = bb{1,1}的结果为: aa = 1     2     3     4     5     6

假设我们使用第一步的结果,可以将整个数据全部输入到一个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 依次提取出需要的数据。

当然最后在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 然后就可以得到要的经纬度数据。

点击展开全文

更多推荐