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

 Réponse acceptée

Andrei Bobrov
Andrei Bobrov le 30 Mai 2014
Modifié(e) : Andrei Bobrov le 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 commentaire

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));

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by