MATLAB 元胞数组操作详解(2.3.6)

在 MATLAB 编程中,元胞数组(Cell Array)是一种灵活的数据结构,允许存储不同类型的数据,如数值、字符串、结构体,甚至是其他元胞数组。本文将通过一个具体的代码示例,带你了解元胞数组的操作及其输出结果。

clear 
clc

y.a = 1;
y.b = [1:3, 4:6];  % y.b = [1, 2, 3, 4, 5, 6]
B{1,1} = 1;
B{1,2} = 'Brenden';
B{2,1} = y;
B{2,2} = {12,34,2; 54,21,3; 4,23,67};
size(B)
ndims(B)

disp(B(2))
disp(B(3))
disp(B(4))

i = input('i=?');
if i == 0
    B(3) = [];
    disp(B)
else
    B{3} = [];
    disp(B)
end
代码解析
1. 创建结构体与元胞数组

首先,代码创建了一个包含两个字段的结构体 y,并将其与其他类型的数据存储到元胞数组 B 中。元胞数组的优势在于其可以存储不同类型和大小的数据单元。

  • y.a = 1y 的第一个字段 a 为数值 1。
  • y.b = [1,2,3,4,5,6]y 的第二个字段 b 是一个包含 6 个元素的向量。
  • B{1,1} = 1B 的第一个单元存储数值 1。
  • B{1,2} = 'Brenden'B 的第二个单元存储字符串 'Brenden'
  • B{2,1} = yB 的第三个单元存储结构体 y
  • B{2,2} = {12,34,2; 54,21,3; 4,23,67}B 的第四个单元是一个 3x3 的元胞数组。

2. 尺寸与维数

size(B)  % 输出 B 的尺寸
ndims(B) % 输出 B 的维数
  • size(B) 返回 B 的尺寸 [2, 2],说明 B 是一个 2 行 2 列的元胞数组。
  • ndims(B) 返回 B 的维度,结果为 2,表示 B 是二维数组。

3. 显示单元格内容

  • disp(B(2)):显示 B 中的第二个单元,其结果为 {'Brenden'},因为它存储的是字符串 'Brenden'
  • disp(B(3)):显示 B 中的第三个单元,这是一个结构体 y,因此输出 {1×1 struct}
  • disp(B(4)):显示 B 中的第四个单元,一个 3x3 的元胞数组,输出 {3×3 cell}

4. 条件判断与元胞删除

i = input('i=?');
if i == 0
    B(3) = [];  % 删除 B 的第三个单元
    disp(B)
else
    B{3} = [];  % 将 B 的第三个单元置为空
    disp(B)
end

根据用户输入的 i 值,代码执行不同的操作:

i == 0 时,B(3) = [] 会删除第三个单元格,使 B 的尺寸从 2x2 变为 2x1,删除了结构体 y,最终结果如下:

 {[1]}    {1×1 struct}    {3×3 cell}

 i ≠ 0 时,B{3} = [] 会将第三个单元格内容清空,但不会删除该单元,元胞数组结构保持不变:

{[       1]}    {0×0 double}
{1×1 struct}    {3×3 cell  }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值