您好我有以下几点:循环通过cellfun计算
for j = 1:N
for i = 1:N
vecdir(i,:) = pos(i,:) - pos(j,:);
dist(i,:) = pdist2(pos(i,:),pos(j,:));
norm(i,:) = vecdir(i,:)./(dist(i,:)).^2;
end
r{j} = norm;
end
u = {or};
在那里我有两个对象U和R:
>> u
u =
[9x3 double]
>> r
r =
Columns 1 through 8
[9x3 double] [9x3 double] [9x3 double] [9x3 double] [9x3 double] [9x3 double] [9x3 double] [9x3 double]
Column 9
[9x3 double]
,我想借此为r的每一个单元,并采取将该单元格中每个元素的乘积与单元格u中的每个元素交叉并将结果求和成一个向量大小[1 3]。到目前为止,我可以用做一次(的R)这一个单元:
b_func = @(u)nansum(cell2mat(cellfun(@(v)cross(u,v)', {r{1}}, 'Un', 0))', 1);
b = cellfun(b_func, u, 'UniformOutput', 0)
其中
b = [1x3 double]
但是我想要做的是在R代表做这一切细胞,使我最终的对象:
b =
Columns 1 through 8
[1x3 double] [1x3 double] [1x3 double] [1x3 double] [1x3 double] [1x3 double] [1x3 double] [1x3 double]
Column 9
[1x3 double]
,其中每个小区是上述的计算,但通过为r的每一个小区重复。任何想法如何做到这一点?
这是优秀的,非常优雅。非常感谢! – brucezepplin 2012-08-07 09:26:58