matlab入门2

元胞数组

MATLAB中的元胞数组(Cell arrays)是一个灵活的数据类型,可以用来存储异构类型的数据。一个元胞数组可以包含各种类型的数据,如数字、字符串、矩阵等,而每个单元都可以有自己的数据类型和大小。

创建元胞数组

最常见的方法是使用cell函数。下面是创建一个2x3元胞数组的例子:

C = cell(2,3);

另一种创建元胞数组的方法是直接使用{}

C = {1, 'a'; [1 2 3], magic(3)}

在这个例子中,C是一个2x2元胞数组,其中包含一个整数、一个字符串、一个行向量和一个3x3的魔术方阵。

访问元胞数组

我们可以使用访问元素的索引来获取元胞数组中的值:

value = C{1, 2};

这个例子返回C的第一行,第二列元素的内容。

修改元胞数组

我们可以通过索引直接修改元胞数组中的值。例如,我们可以改变C的第一行,第二列元素的内容为'b'

C{1, 2} = 'b';

循环访问元胞数组

我们可以使用for循环来遍历元胞数组中的每一个元素:

for i = 1:numel(C)
    disp(C{i})
end

练习:

A = cell(2,6)   %%生成一个一行六列的元胞数组,可以理解为就是个
C = {1, 'a'; [1 2 3], magic(3)}     %%2x2的元胞数组
A{1,2} = eye(3)       %%就是主对角元素都是一的2x2矩阵,单位阵
A{2,3} = magic(5)     %%生成一个五行五列的幻方矩阵,幻方:每个行向量元素的数值的和与每个列向量的和的数值相同
B = A{2,3}      %就可以打印处那个幻方了

 输出结果:

A元胞数组的结构:

A{1,2}:

 

A{2,3}:

元胞数组C:


A =

  2×6 cell 数组

    {0×0 double}    {0×0 double}    {0×0 double}    {0×0 double}    {0×0 double}    {0×0 double}
    {0×0 double}    {0×0 double}    {0×0 double}    {0×0 double}    {0×0 double}    {0×0 double}


C =

  2×2 cell 数组

    {[    1]}    {'a'       }
    {[1 2 3]}    {3×3 double}


A =

  2×6 cell 数组

    {0×0 double}    {3×3 double}    {0×0 double}    {0×0 double}    {0×0 double}    {0×0 double}
    {0×0 double}    {0×0 double}    {0×0 double}    {0×0 double}    {0×0 double}    {0×0 double}


A =

  2×6 cell 数组

    {0×0 double}    {3×3 double}    {0×0 double}    {0×0 double}    {0×0 double}    {0×0 double}
    {0×0 double}    {0×0 double}    {5×5 double}    {0×0 double}    {0×0 double}    {0×0 double}


B =

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

>> 

结构体

在理解了c语言的结构体那么matlab的结构体就非常容易理解

在MATLAB中,结构体是一个高级数据类型,用于封装可能具有不同数据类型(如整数、浮点数、字符向量、其他结构体等)的与之关联的一种特殊类型的数据。每个这样的数据项都称为结构体的一项或域。

以下是如何创建和操作MATLAB结构体的方式:

  1. 创建:

在MATLAB中,我们可以创建一个名为struct_name的空结构体:

struct_name = struct;

要添加域,或者在创建时具有初始化值的域,我们可以这样做:

struct_name.field1 = 'value1';
struct_name.field2 = 123456;
struct_name.field3 = [2 3 2];

或者一次性初始化:

struct_name = struct('field1', 'value1', 'field2', 123456, 'field3', [2 3 2]);

  1. 访问结构体中的值:

可以通过以下方式访问结构体中的数据:

x = struct_name.field1; % 访问field1 并将它赋值为x

  1. 修改结构体中的值:

可以通过以下方式修改结构体中的值:

struct_name.field1 = 'new value'; % 修改field1的值

  1. 删除结构体的字段:

可以这样删除字段:

struct_name = rmfield(struct_name,'field1'); %删除结构struct_name中的字段'field1'

  1. 检查是否存在字段:

在访问结构体的元素或者删除之前,我们一般都会检查该字段是否存在。这样可以避免程序出错:

if isfield(struct_name, 'field1')
    struct_name = rmfield(struct_name,'field1');
end 

练习1:

 

%%初始化结构体
struct_test1 = struct;%%创建结构体 结构体名 = 结构体类型名 
%%第一种方式初始化结构体

struct_test1.field1 = 'value1';      %%结构体的第一个部分
struct_test1.field2 = 123456;        %%结构体的第二个部分
struct_test1.field3 = [2 3 2];       %%结构体的第三个部分
%%第二种方式初始化结构体
%%struct_name = struct('命名1', '变量', '命名2', 变量, '命名3', 变量);
struct_test2 = struct('value', 'value1', 'int', 123456, 'vector', [2 3 2]);​
struct_test1 = rmfield(struct_test1,'field1'); %%删除结构struct_name中的字段'field1'
struct_test1.field1 = 'value2'; 
​

输出结果

 多维元胞数组:

books = struct("name",{["机器学习" "人工智能"]},"price",[30,40]);
books ;

输出结果:

name: ["机器学习"    "人工智能"]
    price: [30 40]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值