任何人都可以指導我如何使用MATLAB代碼從一維矢量中選擇幾個連續項(例如3)每個第n個元素?我怎樣才能連續三個條款中的每一個條款?
例如,如果我的數組是array = [1 2 3 4 5 6 7 8 9 10 11 12]; 我想連續三次跳過四次,所以解決方法是array_solution = [1 2 3 8 9 10];
非常感謝。
任何人都可以指導我如何使用MATLAB代碼從一維矢量中選擇幾個連續項(例如3)每個第n個元素?我怎樣才能連續三個條款中的每一個條款?
例如,如果我的數組是array = [1 2 3 4 5 6 7 8 9 10 11 12]; 我想連續三次跳過四次,所以解決方法是array_solution = [1 2 3 8 9 10];
非常感謝。
使用bsxfun
添加兩個索引向量(列和行):
x = [1 2 3 4 5 6 7 8 9 10 11 12];
len = length(x); % total array length
c = 3; % number of consecutive elements
n = 4; % every nth element
idxs = bsxfun(@plus,(1:c)',0:(c+n):len);
y = x(idxs(:))
y =
[1 2 3 8 9 10]
是的,非常感謝,這正是我需要的:) – JuanF
如果你不想使用bsxfun
(或功能一般要求),由於某種原因,這裏是另一種方式來獲得每個n
元素連續元素c
。
x = 1:12;
c = 3;
n = 4;
% One of the two ranges in the indexing expression must be transposed
% so that MATLAB will apply vector expansion
y = x((0:n+c:end-c) + (1:c)')
y =
1 2 3
8 9 10
您還可以,如果你想要得到的結果是一個1
X m
矢量使用下一個片段。
idxs = (0:n+c:end-c) + (1:c)';
y = x(idxs(:))
那不是我想要的,我編輯的問題,所以現在我認爲這是更好地解釋我的意思 – JuanF
得到它。看看我的回答 – user2999345