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
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
Image Analyst 2015 年 6 月 21 日

0 投票

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
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
Guillaume 2015 年 6 月 21 日

1 投票

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.

カテゴリ

製品

質問済み:

2015 年 6 月 21 日

コメント済み:

Jan
2015 年 6 月 22 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by