问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

MATLAB怎么创建m×n的结构数组

发布网友 发布时间:2022-04-25 00:01

我来回答

5个回答

热心网友 时间:2023-10-16 06:28

借助你的信息,给你举个例子做参考,

A{1,1}=s(1);A{1,2}=s(2);A{2,1}=s(3);A{2,2}=s(4);%组建2*2数组
>> A

下面是结果:A =

[1x1 struct] [1x1 struct]
[1x1 struct] [1x1 struct]

热心网友 时间:2023-10-16 06:29

s(1,1)=struct('number','9901','name','Xiao li','score','90','grade','A');
s(1,2)=struct('number','9902','name','Xiao zhou','score','83','grade','B');
s(1,3)=struct('number','9903','name','Xiao xu','score','71','grade','B');
s(2,1)=struct('number','9904','name','Xiao liao','score','82','grade','A');
s(2,2)=struct('number','9905','name','Li na','score','64','grade','A')

热心网友 时间:2023-10-16 06:29

s={'number','9901','name','Xiao li','score','90','grade','A';
'number','9902','name','Xiao zhou','score','83','grade','B';
'number','9903','name','Xiao xu','score','71','grade','B';
'number','9904','name','Xiao liao','score','82','grade','A';
'number','9905','name','Li na','score','64','grade','A'};
s(1,:)
s(2,:)
s(3,:)
s(4,:)
s(5,:)

热心网友 时间:2023-10-16 06:30

matlab*数组操作

1.一个三维数组由行、列和页三维组成,其中每一页包含一个由行和列构成的二维数组。
2.利用标准数组函数创建*数组
A=zeros(4,3,2) 生成一个4行3列2页的三维全0数组,ones,rand和randn等函数有相似的用法。
3.利用直接索引方式生成*数组
A=zeros(2,3)
A(:,:,2)=ones(2,3)
A(:,:,3)=4
上面的代码先生成一个二维数组作为三维数组的第一页,然后通过数组直接索引,添加第二页、第三页。
4.利用函数reshape和repmat生成*数组
B=reshape(A,2,9)
B=[A(:,:,1) A(:,:,2) A(:,:,3)] %结果与上面一样。
reshape(B,2,3,3)
reshape(B,[2 3 3]) %结果与上面一样。
提示:reshape函数可以将任何维数的数组转变成其他维数的数组。
5.利用repmat函数生成*数组
C=ones(2,3)
repmat(C,[1 1 3]) % repmat写出类似reshape的repmat(C,1,1,3)将显示出错
提示:repmat是通过数组复制创建*数组的,上面的代码即是将数组C在行维和列维分别复制一次,然后再页维复制三次得到2×3×3的三维数组。
6.利用cat函数创建*数组
a=zeros(2);
b=ones(2);
c=repmat(2,2,2);
D=cat(3,a,b,c)%创建三维数组
D=cat(4,a,b,c) %创建4维数组。
D(:,1,:,:) %查看第一列的数据。
size(D) %可以知道数组D的具体维数。
6.数组运算与处理
数组之间的运算要求两个数组在任何一维都必须具有相同的大小。
(1)squeeze函数用于删除*数组中的单一维(即大小为1的那些维)
E=squeeze(D)
size(D) E的数据和D一样,但比D少了一维,只有2行、2列和3页。
(2)reshape函数可以将一个三维向量变成一维向量。
v(1,1,:)=1:6
squeeze(v)
v(:)
(3)reshape函数用于改变*数组的行、列、页以及更高阶的维数,但不改变数组元素的总个数。
F=cat(3,2+zeros(2,4),ones(2,4),zeros(2,4))
G=reshape(F,[3,2,4])
H=reshape(F,[4 3 2]) 或K=reshape(F,2,12)
*数组的重组按这样的顺序:第一页的第一列、第二列……,第二页的第一列、第二列……。
7.sub2ind函数和ind2sub函数用于*数组的直接引用,索引顺序与重组顺序一致。
sub2ind(size(F),1,1,1) %求第1行、第1列、第1页的数值的单一索引
sub2ind(size(F),1,2,1) %求第1行、第2列、第1页的数值的单一索引
sub2ind(size(F),1,2,3) %求第1行、第2列、第3页的数值的单一索引

[r c p]=ind2sub(size(F),19) %由单一索引求其对应的行列页数值。
8.函数flipdim用于*数组的翻转,相当于二维数组中的flipud和fliplr函数。例如下面的代码进行按行、列和按页翻转。
M=reshape(1:18,2,3,3)
flipdim(M,1) %每一页中的行翻转
flipdim(M,2) %每一页中的列翻转
flipdim(M,3) %将第一和第三页翻转调换
9.函数shiftdim用于循环轮换一个数组的维数。如果一个数组r行、c列和p页,则循环轮换一次,就生成一个c行、p列和r页的数组。
M %重新调用
shiftdim(M,1) %轮换一次
shiftdim(M,2) %轮换两次
数组轮换后规律很难直观理解,我们可以将三维数组看成一个类似魔方的方形盒子
函数shiftdim也支持负的循环轮换次数。执行该轮换时,数组的维数增加,并且多出的维数均为单一维。
M %重新调用
size(M)
shiftdim(M,-1)
size(ans).
10.函数permute和ipermute用于实现*条件下的转置操作。从本质上讲permute函数是shiftdimhas函数的扩展。
M %重新调用
permute(M,[2 3 1])
shiftdim(M,1) %两者结果一样
permute函数中的参数[2 3 1]表示使函数第二维成为第一维,第三维成为第二维,第一维成为第三维。
11. permute(M,[2 1 3])
[2 1 3]表示将数组的行列相互转置,页保持不变(只在第一和第二维转置)。
permute函数的第一个参数为待转置的数组,第二个参数为转置顺序,它必须是待转置的*数组的维数的某种排列,否则所进行的转置无法进行。
permute函数也可以用来将一个数组变成更高维的数组,例如shiftdim(M,-1)也可以用permute函数来实现。
permute(M,[4 1 2 3])
这是 因为任何一个数组都具有大于其本身尺寸的更高维数,并且这些维数均为单一维数。例如二维数组具有页这一维,只是只有一页。总之超过数组本身大小的维数都是单一维。M是一个三维数组,其第四维必为单一维,因此将M的第四维与第一维转置,第一维变成了单一维。
12.二维数组两次转置变换回原来的形式,对于*数组,用函数ipermute来取消permute所执行的转置操作。
M %重新调用
permute(M,[3 2 1])
ipermute(M,[3 2 1]) %在我的Matlab上运行没有达到预期效果
13.size函数返回数组每一维的大小
numel函数返回数组的总元素个数
当不指定size的返回值时,将返回一个由数组的各维数组成的向量。当我们知道数组的维数时,可以将维数返回到指定变量中。
[r c p]=size(M)
r=size(M,1)
c=size(M,2)
p=size(M,3)
v=size(M,4)
当一个数组的维数或者某数组维数不确定时,可以利用函数ndims获得数组的维数值。例如:ndims(M),与length(size(M))等效。

热心网友 时间:2023-10-16 06:30

回复
dynamic
的帖子你建立的是1*2的,怎么建立2*1的结构数组?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
心理咨询师培训怎么收费标准是多少 2024心理咨询师培训费用是多少钱 心理咨询师培训费用大概是多少 心理咨询师培训课程收费标准 新蒙迪欧空调怎么用? 福特蒙迪欧16款2.0T冷车启动怠速会一抖一抖的是什么情况 牛油果冻了还能吃不 牛油果冻过了能吃吗 泰兴人很有钱吗? 江苏有多少百万人口以上的城市 土字旁的男孩名 给我找个好听的网名繁体的 用matlab建立一个结构体的数组,包括3个人,字段有姓名,年龄,分数,其中分数由随机函数产生一个3行10列的 介绍些好听,好看的QQ繁体字网名(女生) matlab 怎么建立结构体数组? 给我几个好听的繁体网名 好听、好看、有5个字繁体网名 谁能帮我想个好听好看的繁体字网名,要带符号的哦! 哪位有好听并好看的繁体字网名或伤感的网名给我推荐几个!谢谢 了 有什么繁体的网名好听 好看 北斗与GPS有何区别 双口合在一起是什么字? GPS模块跟北斗模块哪个贵? 双口网卡 有啥作用 硬盘 双口指的是什么? 双口镇的介绍 女的说自己双口是什么意思? 一部男主叫满堂将,反派角色外号叫狮子里昂的日本动漫,动漫中有一幕是男主被反派变成了一个小孩 双口是什么字怎么拼 兽拳战队国语版在手机上 哪里可以看 matlab建立结构数组或转换结构数组的函数是? 我是一个13岁的女孩,我要一个好看、好听的繁体字网名,不要带爱情的. matlab怎样输出结构体数组 怎么用matlab创建一个结构数组,数组中包括姓名、课程、成绩三个量 好听好看的QQ昵称 要繁体的 有符号 带一点伤感 六字以内(包括符号) 好听点的网名,最好是非主流繁体字的或者火星文的,符号要好看的_百度... matlab结果数组name什么意思 带有“丹丹”网名,一定是繁体字,好听,好看。有标点符号的,非主流个性化的,显得比较出众或突出的! 土字旁的男孩名字1 Matlab中,如何生成带变量的struct,如何引用 怎样创建元素为结构体变量的matlab矩阵 往馒头里包糯米是哪的习俗? matlab编程,建立一个单元数组 一层薄皮包着糯米叫什么 matlab GUI创建字符串数组或者结构体 糯米包饺子皮叫什么 用面皮裹着的糯米叫什么?求解(QAQ) matlab关于由struct函数创建结构体数组的问题,具体问题见问题补充,谢谢您的关注 米皮包糯米成半圆形饼叫什么 如何利用matlab 创建元胞数组储存已给表格中的信息?