Loop in a loop question?
1 回表示 (過去 30 日間)
古いコメントを表示
I have a 1 x 521 structure array called 'data' with 20 fields. One of the field is 'GS', which stands for Ground speed. I am trying to find the instantaneous Ground Speed for all arrays, and make a new field called 'instantaneous_GS'. The following is the code I am using.
for n = 1 : length(data)
for i = 1 : length(data(n).GS)
data(n).instantenous_GS = (data(n).GS(i) + data(n).GS(i + 1))/2;
end
end
I am a new MATLAB user, and have no clue what is the problem with my code. Can anyone help me? Thanks.
1 件のコメント
Jan
2015 年 6 月 22 日
You forgot to mention why you assume, that there is a problem at all. Do you get an error message?
採用された回答
Image Analyst
2015 年 6 月 21 日
To get all the GS values in to one array, use the [] operator to concatenate them all then conv() to get the array of means (the average between pairs like you were doing)
for k = 1 : length(data)
data(k).instantaneous_GS = conv([data(k).GS], [.5, .5], 'valid')
end
1 件のコメント
Guillaume
2015 年 6 月 22 日
data(k).GS is already an array, so the [] are actually unnecessary. It would be required if you were accessing multiple elements of the data array:
[data(:).GS]
This is actually a neat way of getting the mean of consecutive elements of an array. However, as the purpose of the conv is not immediately obvious, I would strongly recommend adding a comment explaining what is happening.
その他の回答 (1 件)
Guillaume
2015 年 6 月 21 日
Possibly, you meant to do:
for dataidx = 1 : numel(data)
data(dataidx).instantenous_GS = mean([data(dataidx).GS(1:end-1); data(dataidx).GS(2:end)]);
end
If not, you need to explain the relationship between instantaneous_GS and GS.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!