返回介绍

结构体

发布于 2019-08-26 14:10:40 字数 1399 浏览 1101 评论 0 收藏 0

结构体是MATLAB的多维数组,其元素取决于原文的域指示符。例如,

    S.name = 'Ed Plum';
    S.score = 83;
    S.grade = 'B+'
    

创建一个含三个域的标量结构体。

    S = 
         name: 'Ed Plum'
        score: 83
        grade: 'B+'
    

和MATLAB的其他一切一样,结构体是数组,故可以插入附加元素。在此情况下,数组的每个元素都是带有若干域的结构体。域可以逐个加起来,

    S(2).name = 'Toni Miller';
    S(2).score = 91;
    S(2).grade = 'A-';
    

或者,完整元素可以由单个语句相加得到。

    S(3) = struct('name','Jerry Garcia',...
                   'score',70,'grade','C')
    

现在,结构体足够大,可以输出摘要了。

    S = 
    1x3 struct array with fields:
        name
        score
        grade
    

有几种方法可以把不同域集合到其他MATLAB数组里。它们都是基于逗号分开的列表的符号。若输入

    S.score
    

等于输入

    S(1).score, S(2).score, S(3).score
    

这就是逗号分开的列表。没有任何其他标点,它不是很有用。这样,它把三个分数值依次赋给默认变量ans,并正确无误地输出每个赋值结果。但当你用方括号把表达式括起来时,

    [S.score]
    

就等同于

    [S(1).score, S(2).score, S(3).score]
    

生成一个包含所有分数的行向量。

    ans =
        83    91    70
    

类似地,输入

    S.name
    

只依次把姓名赋值给ans。但若嵌入花括号,

    {S.name}
    

则产生一个包含三个名字的1*3单元数组,

    ans = 
        'Ed Plum'    'Toni Miller'    'Jerry Garcia'
    

    char(S.name)
    

调用char函数,用三个变元从姓名域创立一个字符数组,

    ans =
    Ed Plum
    Toni Miller
    Jerry Garcia
    

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文