matlabmatlab 结构体转数组数组预分配内存

小木虫 --- 500万硕博科研人员喜爱的学术科研平台
&&查看话题
matlab如何寻找结构体数组的相邻元数呢
a(1).x = 2;
a(1).y = 2;
a(1).val = 1;
a(2).x = 3;
a(2).y = 3;
a(2).val = 8;
a(3).x = 4;
a(3).y = 2;
a(3).val = 8;
a(4).x = 2;
a(4).y = 1;
a(4).val = 8;
a(5).x = 4;
a(5).y = 3;
a(5).val = 8;
% m = find(==max(max()));
find(1 == abs(2-) && 0 == abs(2-));%错的
比如我有这样的一个一维的结构体数组,假设a(1)是目标元数,现在怎么找到与a(1)的坐标相邻的元数呢?a(1)的x,y为2,怎么找到a中的某个x,y坐标与(2,2)相邻的那个a的位置呢?不要用循环啊,效率太低了,对于的数组,循环的方法我试了,我运行了一夜都没出结果!
多谢,不是用你的方法,但是你提醒了我,在find里面用&位与&,而不是我的&并且&
这样我怎么程序更慢了呢
你的电脑配置是什么样子的?我的电脑用这样的方法不到2s
不会吧,我的配置不低啊,要不我把完整的程序给你你能帮我运行一下吗?不然我不知道到底是不是程序问题
好的,贴出来吧。
谢谢你热心帮助,我解决问题了。matlab的强项在矩阵操作啊,我不用结构体程序快了不是一倍两倍啊
研究生必备与500万研究生在线互动!
扫描下载送金币
浏览器进程
打开微信扫一扫
随时随地聊科研查看: 7793|回复: 8|关注: 0
matlab的struct结构体数组如何进行大量赋值
<h1 style="color:# 麦片财富积分
新手, 积分 12, 距离下一级还需 38 积分
比如a=struct('ID', {1,2,3,4,5,6,7,8,9,10})
如果我要把a(1:2:9).ID赋值为1:5,除了用for循环外,应该如何写?
谢谢大神指导
帖子最佳答案
关注者: 174
[a(1:2:9).ID] = deal(1:5)
<h1 style="color:# 麦片财富积分
[a(1:2:9).ID] = deal(1:5)
这样的话a(1:2:9).ID每个都是[1,2,3,4,5]
帖子最佳答案
关注者: 174
这样的话a(1:2:9).ID每个都是[1,2,3,4,5]
这不就是你说的吗,如果你要分别赋值
[a(1:2:9).ID] = deal(1,2,3,4,5)
<h1 style="color:# 麦片财富积分
这不就是你说的吗,如果你要分别赋值
[a(1:2:9).ID] = deal(1,2,3,4,5)
不好意思我表达错误
如果是动态数据,没法用逗号啊
帖子最佳答案
关注者: 174
|此回复为最佳答案
不好意思我表达错误
如果是动态数据,没法用逗号啊
这都很明显是用deal了,你看一下文档就可以看看不同的语法选项
b = mat2cell(1:5,1,ones(1,5))
[a(1:2:9).ID] = deal(b{:})
<h1 style="color:# 麦片财富积分
这都很明显是用deal了,你看一下文档就可以看看不同的语法选项
b = mat2cell(1:5,1,ones(1,5))
<h1 style="color:# 麦片财富积分
提示: 作者被禁止或删除 内容自动屏蔽
关注者: 204
如果你的版本不太旧,可以直接用:
[a(1:2:9).ID] = b{:}
站长推荐 /2
Powered by两种定义结构体的方式:直接引用和使用struct函数
1. 建立struct对象不需要事先声明,直接使用就行
x.real = 0; % 创建字段(field)名为real,并为该字段赋值为0
x.imag = 0
% 为x创建一个新的字段imag,并为该字段赋值为0
2. struct数组用动态扩充的方法实现
x(2).real = 0; % 将x扩充为1×2的结构数组
x(2).imag = 0;
3. struct的成员也可以动态增加
x(1).scale = 0;%这样,所有x都增加了一个scale字段,而x(1)之外的其他变量的scale字段为空:
x(1) % 查看结构数组的第一个元素的各个字段的内容
x(2) % 查看结构数组的第二个元素的各个字段的内容,注意没有赋值的字段为空
x的real、imag、scale字段不一定是单个数据元素,它们可以是任意数据类型,可以是向量、数组、矩阵甚至是其他结构变量或单元数组;
不同字段之间其数据类型不需要相同
数组中不同元素的同一字段的数据类型也不要求一样
可以通过引用数组字段来定义结构数据类型的某字段:x(3).real = x(1); x(3).imag = 3;
使用struct()函数创建结构
1. 基本使用方法
struct的使用格式为:
s = sturct('field1',values1,'field2',values2,…);
该函数将生成一个具有指定字段名和相应数据的结构数组
其包含的数据values1、valuese2等必须为具有相同维数的数据
数组values1、values2等可以是单元数组、数值数组或者单个数值。每个values的数据被赋值给相应的field字段。
最后的s的维数与values1,values2维数相同。
s = struct('type',{'big','little'},'color',{'blue','red'},'x',{3,4});
type: 'little'
color: 'red'
2. 建立空的struct数组
green_hopuse_3(2,3)=struct('name',[],'volume',[],'parameter',[])
green_hopuse_3 =
2x3 struct array with fields:
你可能感兴趣的文章
24 收藏,1.4k
7 收藏,711
本文隶属于专栏
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
我要该,理由是:
扫扫下载 App
SegmentFault
一起探索更多未知}

我要回帖

更多关于 结构体数组分配内存 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信