2014-03-05 75 views
1

我使用MATLAB和應用的操作結構的一個陣列的每個元素,結合該結構的多個字段結構的一個陣列中的

說我有結構邊緣的陣列與字段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這樣的單個函數可以用於數組的每個元素,並且執行代碼的時間要少得多。 在此先感謝

回答

2

可你只需要使用:

adding = [edge.start] + [edge.end] + [edge.length]; 

之後您可能需要進行轉置,具體取決於您是否希望adding爲行或列向量。

1

可以消除循環利用edge(:)和環繞在括號中的場像[edge(:).end]完全是這樣的:

adding_better = [edge(:).start]+ [edge(:).end] + [edge(:).length];