Create a matrix from a row vector according to specifications

I am working in matlab. I have a row vector in and a scalar number fuzzy_no. I want to create a matrix output of size fuzzy_no times (numel(in)-fuzzy_no). such that the ith col of the matrix output has the elements from i:i+fuzzy_no-1 of row vector in.
In other words I want to implement the following loop without using loops
n = numel(in);
output = zeros(fuzzy_no,n-fuzzy_no);
for i = 1:size(output,2)
output(:,i) = in(1,i:i+fuzzy_no-1);
end

 Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 30 Mai 2014
Bearbeitet: Andrei Bobrov am 30 Mai 2014
output = hankel(in(1:n-fuzzy_no),in(n-fuzzy_no:end-1))';
or
output = in(bsxfun(@plus,1:n-fuzzy_no,(0:fuzzy_no-1)'));

1 Kommentar

Thanks, I needed the last element to be missing so this worked fine (without the transpose),
output = hankel(in(1:n-fuzzy_no),in(n-fuzzy_no:end-1));

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Community Treasure Hunt

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

Start Hunting!

Translated by