Matlab四维矩阵和cell哪个好,Matlab结构体和cell数组的理解

鉴于网上关于内存有关的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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值