gpt4 book ai didi

arrays - matlab中的结构

转载 作者:行者123 更新时间:2023-12-02 09:22:44 26 4
gpt4 key购买 nike

%示例

clear all
a1 = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));
a2 = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));
a3 = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));
a4 = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));

假设这些结构代表一个时间序列,其中 a1 代表前 5 天(例如),a2 代表第 5-10 天,依此类推...我正在尝试 组合结构中的每个字段名,以便我有一个连续的系列(而不是将它们分成不同的结构。例如...

数据1 = [a1.数据1;a2.数据1;a3.数据1;a4.数据1];

然后对 data2 和 data3 执行相同的操作

最好的方法是什么?

最佳答案

最好的方法是预先将结构定义为结构数组:

a(1) = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));
a(2) = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));
a(3) = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));
a(4) = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));

这可以让您轻松获取数据:

cat(1,a.data1)

但是如果你坚持使用 N 个结构,那么试试这个:

function so3
a1 = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));
a2 = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));
a3 = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));
a4 = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));

s{1} = struct2cell(a1);
s{2} = struct2cell(a2);
s{3} = struct2cell(a3);
s{4} = struct2cell(a4);

N = numel(fieldnames(a1));
data = cell([1 N]);
for i=1:N
data{i} = cell2mat(cellfun(@(x){x{i}'},s));
end

end

关于arrays - matlab中的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9247917/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com