フィルターのクリア

How to create empty indexes when not available?

8 ビュー (過去 30 日間)
Dc215905
Dc215905 2021 年 5 月 21 日
編集済み: Stephen23 2021 年 5 月 22 日
For example:
Say:
data = [2,3,4,5,3,2,4,5]
I want to only look at a subset of the data starting from the 5th index +/-2 of data:
window = data(5-2:5+2)
window =
4 5 3 2 4
That works no problem because the data exisit.
Now say I want to look a the data starting from the 5th index -10/+2
window = data(5-10:5+2)
window = 'Array indices must be positive integers or logical values.'
Since there are not 10 indices available before the 5th index this won't work.
Is there a way to automatically fill indexes that don't exist with 'NaN' and fill the rest do the final output would look something like:
window =
NaN NaN NaN NaN NaN NaN 2 3 4 5 3 2 4
Any help would be greatly appreciated.
Thanks!

採用された回答

Stephen23
Stephen23 2021 年 5 月 21 日
編集済み: Stephen23 2021 年 5 月 21 日
data = [2,3,4,5,3,2,4,5];
x = 5;
n = 10;
p = 2;
window = data(max(1,x-n):min(end,x+p))
window = 1×7
2 3 4 5 3 2 4
Are the NaNs really required?
  2 件のコメント
Dc215905
Dc215905 2021 年 5 月 21 日
編集済み: Dc215905 2021 年 5 月 21 日
Thanks for the response. Yes, the NaN are necessary ( i think).
I'm trying to apply the answer you gave to the following scenerio.
I have a data set that's 1x1000. I'm allowing users to find specific events within the data and plotting a window around the event. This could result in 100 different event windows for a given dataset. For the most part, the window they choose around an event has data available, but if the event is at the beginning or the end of the data set then they won't be able to group that particular event with the rest of the events because the array lengths won't be similar.
I've thought about using just cells, but my current GUI is written in a way that each event window is stored in the a cell, but the associated x value ('time') is not because it's assumed to be constant depending on the users window definition. Ultimately the user is able to collapse all of the event windows and take the average signal etc. As a result, my current solution is to just fill the empty IDX with NaN so all of the arrays are uniform in length for downstream analysis options.
Stephen23
Stephen23 2021 年 5 月 21 日
編集済み: Stephen23 2021 年 5 月 22 日
Just pad the NaNs to the ends:
data = [2,3,4,5,3,2,4,5];
x = 5;
n = 10;
p = 2;
window = data(max(1,x-n):min(end,x+p))
window = 1×7
2 3 4 5 3 2 4
window = [nan(1,1+n-x),window,nan(1,x+p-numel(data))]
window = 1×13
NaN NaN NaN NaN NaN NaN 2 3 4 5 3 2 4

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSearch Path についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by