关于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(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程序中的结构体的主要内容,如果未能解决你的问题,请参考以下文章