Matlab结构体和cell数组的理解

本文详细介绍了MATLAB中Cell矩阵和Structure的操作方法,包括如何通过小括号和花括号选择子矩阵,以及批量导入导出数据的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        鉴于网上关于内存有关的matlab资料比较少(不像JAVA多而且很多大牛讲解),对于一些想要弄懂matlab一些原理性的朋友来说就很沮丧。我认为这真的会很影响学习效率。我作为matlab的一份子,非常想要为此出一份力。所以我便拿出一些我总结出的事物和理解来分享,共同学习,如有错误请帮忙纠正!(因为我对我的理解没有确切的把握)。


这里分享几个链接,促进学习。

Matlab内存机制

点击打开链接

Matlab官方中文学习网站

点击打开链接

Matlab元胞数组

点击打开链接

Matlab结构体数组和元胞数组

点击打开链接

        已经都看过的朋友可以直接看下文


        对于一般的double类型的矩阵我们可以通过:或者标量的数字来选择它的子矩阵

PS:

a = zeros(8,8);

b = a(1:7,1);

c = a(:,:);

d = a(1:end,2:3);

        而对于cell矩阵,你可以使用小括号来操作,但是结果是另一个cell子矩阵,而如果用{}来对cell里的值进行操作的话,譬如

    a = 1:16;

    a = reshape(1:16,[4,4]);

    a = num2cell(a);

    %获得一个4*4的cell矩阵,里面值是1-16;

    b = a{1:2,1};

    你只能获取一个值。这是因为它返回的机制是和函数返回机制是一样的。函数返回多个返回值,每个返回值完全不同,a{1:2,1}在理论上可以返回完全不同的两个返回值,所以它跟接受函数返回值一样.PS:[x1,x2] = a{1:2,1};   这样就能获得两个返回值了。这是{}的批量导出,而对于批量导入呢,你可以把a{1:2,1}的两个cell看成两个普通的变量如c,d之类的。然后如果你要在一行对这些变量进行赋值,你该怎么办?我相信有的朋友能看出来,[c,d] = deal(1,2);那么a{1,2}也是这个原理。[a{1:2,1}] = deal(1,2);因此我们能把这种cell矩阵看成一个可以动态使用的变量。

    而对于结构体而言,它有部分机制和上面一样。

    获得一个结构体的值是

    a(1,7).x = 8;

    a(1,7).y = 9;

%形成一个结构体

    c = a(1,7).x;

若要批量操作

    [a(1,1:end).x] = deal(1);

    [x1,x2,x3,x4,x5,x6,x7] = a(1,1:end).y;

    [a(1,1:end).x] = a(1,1:end).y;

    原理和上面相同

    如果并没有加入[],形同函数返回多个值那样

    则会报出————需要大括号或点索引表达式中的一个输出,但结果有 X 个。(取决于你选中了多少个cell或者结构体)






评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值