matlab中会遇到类型为cell即元胞的变量。官方定义元胞数组是一种包含名为元胞cell的数据类型,其中每个元胞都可以包含任意类型的数据。
翻译翻译:
猫(double数组)和老鼠(string数组)不能放在一起,会打起来(报错);直接拿筐盖住猫和老鼠(花括号括起来两个数组)就得到了一组筐(元胞数组),反正大家都是个筐没区别(元胞数组里都是元胞,为同一类型不会报错)。

关注公.众号:数学建模BOOM,回复“群”,b站公开课课件+其他数模资料等在群文件;群文件内本代码文件名“whatcell.mlx”;
代码块
clear,clc
% 定义double型数组(数组就单行矩阵),里面基本元素是双精度(double)数字
a = [1, 3, 5];
b = ["北京", "上海"]; % 字符串数组,里面基本元素是字符串
复制成功
想把数组a和字符串b保存早一起且"不变质”?
代码块
c = [a,b] % c里全是字符了;且a和b维度不同时无法串联
c(1) % c已经彻底是个字符串了,无法得到原double数组a中的数值
复制成功
得到输出:
c = 1×5 string 数组 "1" "3" "5" "北京" "上海" ans = "1"
c已经彻底是个字符串了,无法再得到原数组a中的数值(输出变成字符“1”而不是数字1)。
两个变量用花括号括起来,则定义为了元胞数组。其中的double数组a和字符数组b都变成了元胞a和元胞b。赋值给变量d得到的就是元胞数组d
代码块
d = {a,b} % 元胞数组,原本的double和字符串都变成了“元胞”
复制成功
输出:
d = 1×2 cell 数组 {[1 3 5]} {["北京" "上海"]}
代码无常,大筐装小筐。直接圆括号调用,得到的是元胞数组里的单个元胞:
代码块
d(1) % 圆括号输出的仍为元胞、不是double数组
复制成功
输出:
ans = 1×1 cell 数组 {[1 3 5]}
元胞毕竟只是筐,其内部没有变:第一个元胞是a,a是double数组。
用花括号设定元胞数组下标,即第一个元胞d{1},就能得到double数组a
代码块
d{1} % 花括号输出其第一个元胞内容,即得到数组a
d{1}(3) % 可得到数组a原本的内容,第三个数字是5
复制成功
输出:
ans = 1 3 5
ans = 5
而把数组a写成两行试试:a = [1, 3, 5; 2 4 6];
此时c会报错,但d不会。因为元胞是个筐……
关注公.众号:数学建模BOOM,回复“论文”,获取历年国赛美赛和其他比赛赛题与获奖论文+更多数模学习资料~
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删