关于matlab程序中的结构体

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于matlab程序中的结构体相关的知识,希望对你有一定的参考价值。

global A;
A.Interference=[];
A.Interference(1, 3, 2)=0;
A.Interference(2, 3, 2)=0;
这个是生成2个2行3列的矩阵吗?但是好像这句A.Interference(1, 3, 2)=0; 没什么用呀。
还有如果改成
A.Interference(1, 3, 2)=1;
A.Interference(2, 3, 2)=2;
为什么只有第二个矩阵值改变呢?
ans(:,:,1) =

0 0 0
0 0 0

ans(:,:,2) =

0 0 1
0 0 2

首先,这个跟结构体没有任何关系,即使是普通变量也是一样,我就用变量a来说明
比如a(1, 3, 2)=0;

是指对矩阵a的第(1,3,2)这个元素赋值为零,如果之前没有定义过这个矩阵,matlab会自动产生一个1×3×2的矩阵,其他的元素值都赋值为零
指定第二句a(2, 3, 2)=0;

因为超出了a之前定义的维度1×3×2,matlab会对矩阵进行扩为,扩大到2×3×2,增加的元素都置零
如果是下面两句a(1, 3, 2)=1; 和a(2, 3, 2)=2;

跟上面说的原理一样,会产生2×3×2的矩阵,并且会对(1, 3, 2)和(2, 3, 2)这两个元素分别赋值1和2,剩下未赋值的元素都为零,所以就有了你说的结果
参考技术A 就是这样使用的,你先是定义了一个model的结构体,有两个成员,一个是weights,是一个数组,另外一个是parameter,是一个空的数组
然后定义parameter成员为单元数组,这个单元数组的第一个单元式一个结构体,结构体中有4个成员,全是空的数组

matlab中怎么定义结构体

1. 使用直接引用方式定义结构
与建立数值型数组一样,建立新struct对象不需要事先申明,可以直接引用,而且可以动态扩充。比如建立一个复数变量x:
x.real = 0; % 创建字段名为real,并为该字段赋值为0
x.imag = 0 % 为x创建一个新的字段imag,并为该字段赋值为0
x =
real: 0
imag: 0
2. 使用struct函数创建结构
使用struct函数也可以创建结构,该函数产生或吧其他形式的数据转换为结构数组。
struct的使用格式为:
s = sturct('field1',values1,'field2',values2,…);
参考技术A MATLAB提供了两种定义结构的方式:直接应用和使用struct函数。
1. 使用直接引用方式定义结构
与建立数值型数组一样,建立新struct对象不需要事先申明,可以直接引用,而且可以动态扩充。比如建立一个复数变量x:
x.real = 0; % 创建字段名为real,并为该字段赋值为0
x.imag = 0 % 为x创建一个新的字段imag,并为该字段赋值为0

以上是关于关于matlab程序中的结构体的主要内容,如果未能解决你的问题,请参考以下文章

matlab中的结构体

在MATLAB中有没有结构体啊?如何定义?

matlab中如何看函数结构体中的数据

matlab中怎样读取结构体某字段

matlab 怎么建立结构体数组?

matlab 怎么将374个结构体数据保存在一个数组中?用哪个函数