Matlab 中带有 parfor 的结构数组
Array of structures with parfor in Matlab
我正在使用 Matlab 来处理我的项目,我想使用“parfor”作为我的代码的一部分,return在每次迭代中都是一个结构数组,但是当我 运行 我的代码有一些错误。我只是试图以最简单的方式举例说明我的问题。将不胜感激任何帮助!这是示例:
clear;
clc;
% An arbitrary number
constant_Number=3;
tic
parfor i=1:2
k=[constant_Number,i];
r(i)=test(k);
end
toc
测试函数如下:
function [a]=test(k)
a.first=k(1) * k(2);
a.second=k(1)+k(2);
b.first=k(1)/k(2);
b.second=k(1);
a=[a;b];
end
需要注意的是,当我只有 return 一个结构时,它工作正常,但是当我有多个结构时(例如添加 b),我收到以下错误:“无法执行赋值,因为左侧的索引与右侧的大小不兼容。"
谢谢,
阿里
找到解决方案,只需要定义一个单元格数组,然后最后合并它们!关注即可回复:
clear;
clc;
% An arbitrary number
constant_Number=3;
% Define an arbitrary array of structure
arb_arr=[];
% Define an arbitrary cell array
r={};
tic
parfor i=1:2
k=[constant_Number,i];
r{i}=test(k);
end
for i=1:2
arb_arr=[arb_arr;r{i}];
end
toc
我正在使用 Matlab 来处理我的项目,我想使用“parfor”作为我的代码的一部分,return在每次迭代中都是一个结构数组,但是当我 运行 我的代码有一些错误。我只是试图以最简单的方式举例说明我的问题。将不胜感激任何帮助!这是示例:
clear;
clc;
% An arbitrary number
constant_Number=3;
tic
parfor i=1:2
k=[constant_Number,i];
r(i)=test(k);
end
toc
测试函数如下:
function [a]=test(k)
a.first=k(1) * k(2);
a.second=k(1)+k(2);
b.first=k(1)/k(2);
b.second=k(1);
a=[a;b];
end
需要注意的是,当我只有 return 一个结构时,它工作正常,但是当我有多个结构时(例如添加 b),我收到以下错误:“无法执行赋值,因为左侧的索引与右侧的大小不兼容。"
谢谢, 阿里
找到解决方案,只需要定义一个单元格数组,然后最后合并它们!关注即可回复:
clear;
clc;
% An arbitrary number
constant_Number=3;
% Define an arbitrary array of structure
arb_arr=[];
% Define an arbitrary cell array
r={};
tic
parfor i=1:2
k=[constant_Number,i];
r{i}=test(k);
end
for i=1:2
arb_arr=[arb_arr;r{i}];
end
toc