Avoid for loop?

1 回表示 (過去 30 日間)
grega
grega 2018 年 12 月 19 日
回答済み: Stephen23 2018 年 12 月 19 日
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 日
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 日
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

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

製品


リリース

R2015b

Community Treasure Hunt

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

Start Hunting!

Translated by