创建从多个结构体,结构体单元阵列组件直接访问吗?

6视图(30天)
MATLAB初学者在这里道歉,如果这是一个基本问题。我用脑电图分析实地考察(https://www.fieldtriptoolbox.org/tutorial/eventrelatedstatistics/),需要创建一个单元阵列从病人数据从多个病人。单元阵列中的每个病人由1 x1结构、表示和数据结构是由7个变量的各种类型(结构、双等。)
我想创建一个for循环,经过每个病人的数据聚合成一个细胞数组。我能创建一个for循环,每个病人的个人1 x1结构和总量,我得到一个单元阵列n 1 x1结构体,其中包含每个各自的病人的数据似乎普遍正确的格式,是必要的。
为比较理想的单元阵列格式是什么样子,我下载的示例主题上面的平均数据链接(allsubjFIC和allsubjFC数据可以从超链接下载的主题数据的文本指令)。单元阵列,他们看起来非常类似于我的,但是他们没有“中间”结构。
即当我点击单元阵列、我双击单元阵列组件(由n 1 x1 n结构对n病人)- - >当我双击一个人1 x1 struct它给我带来另一个1 x1结构与它的具体名称(如timelock_2_OFF_art) - - >双击这个然后它向我展示了7变量内。
当我点击单元数组的例子(如allsubjFIC),一切本质上是相同的,除了当我点击原来的1 x1 struct代表病人,需要我直接到7组件的变量,而不是到另一个1 x1结构与原结构的具体名称需要在for循环。
有办法“删除”中间结构(或者叫做),这样当我双击单元格数组,它给我带来了一排1 x1结构(每个单元格代表一个不同的病人),当我点击一个给定1 x1结构,它直接带我到7结构的组成部分,而不是另一个1 x1 struc是我用来存储简单的命名结构中包含的数据吗?我不能运行任何统计功能的工具箱在我单元阵列,因为它带来了以下错误消息(复制并粘贴下面),我认为这与我设置单元阵列的方式。
谢谢!
allsubj_timelock_OFF_art = [];
指数=[2:7九14]
2 =指数
timelocked =负载([ “timelock_” num2str (2) “_OFF_art.mat” ])
allsubj_timelock_OFF_art = (allsubj_timelock_OFF_art, {timelocked});
结束
% %运行ft_timelockgrandaverage平均数据在所有科目
cfg = [];
grandavg_OFF_art_2 = ft_timelockgrandaverage (cfg allsubj_timelock_OFF_art {:})
错误信息:
错误使用ft_checkdata
这个函数需要timelock数据作为输入,看到ft_datatype_timelock。
错误ft_timelockgrandaverage(第99行)
变长度输入宗量{我}= ft_checkdata(变长度输入宗量{},“数据类型”、“timelock”、“反馈”,“不”);

答案(1)

Stephen23
Stephen23 2023年2月18日
编辑:Stephen23 2023年2月18日
您的代码会更简单、更健壮的如果你给了每一个结构完全相同的名称。而不是强迫元数据为变量名,你应该保持这些变量名和存储元数据是相同的 一个变量。迫使元数据为变量名可以访问你的数据慢的和更复杂。
有了这些方法……
假设每个垫文件包含 一个 变量:
V =[2:7,九14];
N =元素个数(V);
C =细胞(1,N);
k = 1: N
F = sprintf (“timelock_ % d_OFF_art.mat”V (k));
C (k) = struct2cell(负载(F));
结束
S = [C {}):%创建一个结构数组

类别

找到更多的在数据类型帮助中心文件交换

s manbetx 845


释放

R2022b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!