I want to generate arbitrary matrix of indeces, e.g.:
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7
5 6 7 8
6 7 8 9
One can observe a series in it. I solved the problem as follows:
% --- Inputs
x = 1:9;
window = 4;
% --- creating the matrix
mm = length(x);
nb_rws = mm - window + 1;
y = ones(nb_rws,window);
for i = 1 : nb_rws
y(i,:) = x(i : i + window -1);
end
y
Is there a solution to avoid the for loop? Thanks..

 採用された回答

madhan ravi
madhan ravi 2018 年 12 月 19 日
編集済み: madhan ravi 2018 年 12 月 19 日

0 投票

y=hankel((1:4),(4:9))'
Gives:
y =
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7
5 6 7 8
6 7 8 9

その他の回答 (1 件)

Stephen23
Stephen23 2018 年 12 月 19 日

0 投票

Simpler:
>> hankel(1:6,6:9)
ans =
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7
5 6 7 8
6 7 8 9

カテゴリ

ヘルプ センター および File ExchangeLoops and Conditional Statements についてさらに検索

製品

リリース

R2015b

質問済み:

2018 年 12 月 19 日

回答済み:

2018 年 12 月 19 日

Community Treasure Hunt

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

Start Hunting!

Translated by