我正在使用MATLAB和
假设我有一个结构数组 edge ,其字段为edge.start,edge.end,edge.length。
现在我需要应用一个在结构的每个字段中添加值的函数。如何在不以下列方式访问数组中的每个元素的情况下执行此操作。
no_of_element = size(edge,2)
adding = [];
for i = 1:no_of_element
adding = [adding;edge(i).start+edge(i).end+edge(i).length];
end
我的阵列边缘非常大。它包含一个国家的道路网络中的所有链接,并且循环需要很长时间,而且我还有许多其他功能,例如我在此处显示的添加操作。
是否有像find,arrayfun这样的函数可以用于数组的每个元素,并且执行代码所花费的时间要少得多。 提前致谢
答案 0 :(得分:2)
你能使用:
adding = [edge.start] + [edge.end] + [edge.length];
您可能需要事后调换,具体取决于您是希望adding
是行向量还是列向量。
答案 1 :(得分:1)
您可以使用edge(:)
消除循环,并像[edge(:).end]
一样将括号中的字段括起来:
adding_better = [edge(:).start]+ [edge(:).end] + [edge(:).length];