Convert vector to matrix with used-defined step

10 vues (au cours des 30 derniers jours)
santos666
santos666 le 24 Sep 2013
Hi.
I want to convert a vector to a matrix but with a step defined by me.
For example:
myVector = [1 2 3 4 5 6];
myMatrix = [1 2; 2 3; 3 4; 4 5; 5 6];
I am familiar with vec2mat but this function does not do what I want.
Using this function to create a 2-column matrix the final result would be:
myMatrix = [1 2; 3 4; 5 6];
I already searched but I couldn't find an answer to this problem.
I am trying to avoid using for loops.
Thank you.
Best Regards.

Réponses (3)

Azzi Abdelmalek
Azzi Abdelmalek le 24 Sep 2013
Modifié(e) : Azzi Abdelmalek le 24 Sep 2013
v=[1 2 3 4 5 6];
v=[v;v];
v=reshape(v(2:end-1),2,[])'
%or simply
v=[1 2 3 4 5 6];
v=[v(1:end-1); v(2:end)]'

dpb
dpb le 24 Sep 2013
Think storage order... :)
One (of many possible) solutions...
>> V = [1 2 3 4 5 6];
>> reshape([V(1) reshape([V(2:end-1)' V(2:end-1)']',1,[]) V(end)],2,[])'
ans =
1 2
2 3
3 4
4 5
5 6
>>

santos666
santos666 le 24 Sep 2013
Modifié(e) : santos666 le 24 Sep 2013
Thank you.
You are both right but i realize now that i gave an example too much simple.
Sorry, my mistake.
An harder one:
if true
v = 1:10
m = [
1 2 3 4 5;
2 3 4 5 6;
3 4 5 6 7;
4 5 6 7 8;
5 6 7 8 9;
6 7 8 9 10;
]
end

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by