Create a matrix from a row vector according to specifications

2 visualizzazioni (ultimi 30 giorni)
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

Risposta accettata

Andrei Bobrov
Andrei Bobrov il 30 Mag 2014
Modificato: Andrei Bobrov il 30 Mag 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 Commento
Nishant
Nishant il 30 Mag 2014
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));

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by