matlab中元胞数组的使用

2025-11-20 18:59:50

1、假如一个文件中既有字符串又有数值,而且我们在读取的时候既需要读取字符串也需要读取其中的数值,那么使用命令时matlab默认将其读出为元胞数组格式,即cell。

假如我们有如下一个文件,命名为aaa.txt:

输入如下命令,即得到一个cell:

fid = fopen('aaa.txt','r');aa = textscan(fid,'%s');fclose(fid);

matlab中元胞数组的使用

matlab中元胞数组的使用

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'}

matlab中元胞数组的使用

3、下面展示一下这一cell数组:

cellplot(bb)

matlab中元胞数组的使用

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 <= 7000

cc{ii,1} = aa{1,1}(jj);

cc{ii,2} = aa{1,1}(jj+1);

jj = jj+5;

ii = ii+1;

end

依次提取出需要的数据。

matlab中元胞数组的使用

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

然后就可以得到要的经纬度数据。

matlab中元胞数组的使用

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢