`

matalb中struct的诡异构造方式

阅读更多
读MatConvNet代码时被struct坑了,特此记录!!!

官方文档http://cn.mathworks.com/help/matlab/ref/struct.html

matlab中,struct可以有多种方式构造,

比如 a.prop=1;  a.prop2=2;  可以动态给struct添加属性。

同时,我们也可以 sm=struct('prop0',1, 'prop1',[]); 直接构造有多个属性的struct

然而,如果问sc=struct('prop0',1, 'prop1',{});的结果是什么,相信很多人会说和上面那个差不多嘛,得到一个具有两个属性的struct!!!
然而,,,
直接上代码:
%% testStruct
sm=struct('prop0',1, ...
       'prop1',[]);  %  得到一个struct,prop1为 []
   
   
%% 
sc=struct('prop0',1, ...
       'prop1',{}); %  得到一个空的struct,  等效于sc=struct(); 原因如下
      
%在 struct 中使用{}并非是添加了一个cell类型的元素,甚至cell(0)也不是!! 
%原因在于matlab中可以通过cell类型的变量一下子创建struct数组,见下面语句
   
scs=struct('prop0',1, ...
       'prop1',{1,2}); %  得到struct array,  等效于下面两个语句
   
scs2(1)=struct('prop0',1, ...
       'prop1',1);
scs2(2)=struct('prop0',1, ...
       'prop1',2);
   
%%  构造具有value={}的struct的正确姿势
sc_withEmptyCell=struct('prop0',1, ...
       'prop1',{{}});   % 是的,没错,要两层大括号


结果如下:



struct其他特性
struct数组中某一属性转matrix、cell
lists=dir('D:\');  %此时lists是一个有多个属性的struct array
m= [lists(:).isdir]; % isdir属性转数组 , 直接省略(:)也行;  即 m=[lists.isdir]
c={lists(:).name};

  • 大小: 9.4 KB
分享到:
评论

相关推荐

    matlab开发-struct2double

    总之,`struct2double`是MATLAB中处理结构体数据的一种重要工具,它简化了数值型结构体数据的转换,提高了处理效率。在进行MATLAB编程时,掌握这类数据类型转换方法,能够极大地提升代码的灵活性和实用性。

    matlab开发-STRUCT2STR

    在MATLAB编程环境中,`struct2str`是一个非常实用的内置函数,用于将结构体(struct)转换成字符向量(char字符串)。这个功能在数据处理、存储和调试时非常有用,因为它能让我们以文本形式查看或记录结构体的内容。...

    matlab开发-xml2struct

    在MATLAB中,XML文件处理是一项常见的任务,特别是在数据交换、配置存储或读取结构化信息时。"matlab开发-xml2struct"是针对这一需求的一个工具,它通过一个MEX函数实现了将XML文件转换成MATLAB结构的功能。下面我们...

    matlab开发-struct2string

    在MATLAB编程环境中,`struct2string`是一个非常实用的函数,它允许用户将结构体(struct)转换成创建该结构体的MATLAB代码字符串。这个功能在代码的序列化、存储或者理解复杂的结构体定义时特别有用。下面我们将...

    matlab开发-ini2struct

    在MATLAB中,`ini2struct` 是一个用于解析`.ini`配置文件并将其内容转换为MATLAB结构体的函数。`.ini`文件通常用于存储应用程序的设置和配置信息,结构清晰,易于读写。本项目`matlab开发-ini2struct` 提供了一个...

    matlab开发-class2struct

    MATLAB中的类是一种面向对象编程的构造,允许用户创建具有特定属性和方法的数据类型。类定义了对象的结构和行为,而结构体则是一个包含字段(类似于类的属性)的数据容器,不支持方法。当需要将类实例简化为纯数据...

    matlab开发-struct2File

    总结起来,"matlab开发-struct2File"涉及的关键知识点包括MATLAB中的结构体数据类型、数据序列化、文件操作(`save`、`fwrite`、JSON编码),以及自定义函数来实现这些功能。理解和掌握这些知识点对于进行MATLAB开发...

    matlab开发-NSTRUCT2CELL

    总的来说,`MATLAB开发-NSTRUCT2CELL`是一个实用的工具,它帮助用户更方便地管理和操作MATLAB中的嵌套结构数据。通过将复杂的嵌套结构转换为单元数组,提高了代码的可读性和可维护性,是MATLAB语言基础学习和应用中...

    matlab开发-struct2tablers

    在MATLAB中,内置的`struct2table`函数可以将一个或多个结构体转换为表格,但不支持深度遍历。`struct2tablers`则弥补了这一不足,它可以处理嵌套结构体,将所有数据展开到一个或多个表格中。这通常涉及到以下几个...

    matlab开发-struct2matS

    在MATLAB中,你可以创建一个结构体变量,然后为其分配字段和值。例如: ```matlab s = struct('name', 'Alice', 'age', 30, 'city', 'New York'); ``` 在上述代码中,我们定义了一个结构体`s`,它有三个字段:'...

    matlab开发-struct2tree

    在MATLAB编程环境中,`struct2tree`是一个用于将结构体数据转换成树形图(uitree)的实用工具。...在MATLAB中,可以将`struct2tree`集成到GUI中,以动态展示数据的变化,提供一个交互式的数据浏览体验。

    matlab开发-struct2table

    在本教程中,我们将深入探讨`struct2table`的用法以及它如何帮助我们改善MATLAB中的数据管理工作。 首先,让我们了解MATLAB中的结构数据类型。结构数组是由字段名和相应值组成的数组,每个字段可以包含不同类型的...

    matlab开发-struct2strrecursive

    总的来说,`struct2strrecursive`函数是MATLAB中处理结构体数据的一个实用工具,通过递归方式展示了结构体的层次结构,加深了对结构体数据的理解,同时也展示了MATLAB在处理复杂数据结构时的灵活性。掌握这个函数的...

    matlab开发-struct2ini

    在MATLAB编程环境中,"struct2ini"是一个实用的功能,用于将MATLAB中的结构体数据转换并保存到INI配置文件中。INI文件是一种常见的文本格式,通常用于存储软件的配置参数,因为它们易于读写,结构清晰。在这个项目中...

    matlab开发-struct2xml

    结构体是MATLAB中用于组织数据的一种数据类型,它类似于C语言或其他编程语言中的结构体或类。结构体可以包含多个字段,每个字段都存储不同类型的数据。而XML则是一种标记语言,用于存储和传输数据,具有良好的可读性...

    matlab开发-str2struct

    在MATLAB中,`str2struct`函数是一个非常实用的工具,主要用于将字符串转换为结构体,这在处理数据解析、文件读取或构建自定义数据格式时非常有用。在这个主题中,我们将深入探讨`str2struct`的使用方法、工作原理...

    matlab开发-struct2csv

    在MATLAB中,"struct2csv"是一种常见的数据转换操作,它涉及到将MATLAB的数据结构(结构体数组)转换为逗号分隔值(CSV)文件。这种转换对于数据分析、数据存储和与其他软件如Excel进行数据交换非常有用。在本项目中...

    matlab开发-xls2struct

    在MATLAB中,`xls2struct`是一个非常实用的函数,用于从Excel文件中读取数据并将其转换为MATLAB中的结构体数组。这个工具在处理大量数据时尤其有用,因为它允许用户以一种结构化的方式存储和操作Excel表格中的信息。...

    matlab开发-kml2struct

    在MATLAB中,`kml2struct`是一个用于处理.KML(Keyhole Markup Language)文件的自定义函数,这种文件格式通常用于存储地理空间数据,如地图标记、路径和多边形。`kml2struct`的目标是将.KML文件转换为MATLAB中的...

    matlab开发-struct2ws

    在标题"matlab开发-struct2ws"中,提到的是关于如何在MATLAB中开发一个功能,利用`struct2ws`将结构体转换成Web服务可接受的数据格式。这可能涉及到创建自定义函数、编写脚本或者在MATLAB的工作区中直接操作结构体...

Global site tag (gtag.js) - Google Analytics