Concatenate matrix numbers linspace
Afficher commentaires plus anciens
Hi there,
I have a matrix variable x = [0 1 2 3]
I want to generates linearly spaced vectors in between the numbers into a variable. My problem here is concatenate the numbers into p the next time n increases.
I know i should be using linspace to generate number for eg:
for i = 1:(length(x)-1)
p = linspace(x(i),x(i+1),0.5)
end
the results i want is:
p = 0 0.5 1 1.5 2 2.5 3
Hope someone can shed some light here.
1 commentaire
Azzi Abdelmalek
le 13 Août 2012
what do you mean by
p = linspace(x(i),x(i+1),0.5)
Réponse acceptée
Plus de réponses (5)
p = 0:.5:3;
or
p = linspace(0,3,7)
EDIT.
I think I misunderstood your problem. Do you mean like this:
x = [0.25 1 1.5 2 2.4 2.6]
x(2,1:end-1) = diff(x)/2+x(1:end-1);
x = reshape(x(1:end-1),1,[])
Amazing Trans
le 13 Août 2012
0 votes
Sean de Wolski
le 13 Août 2012
Modifié(e) : Sean de Wolski
le 13 Août 2012
Here is a terrible solution:
x = 0:3; %sample x
x = [x(1:end-1); x(2:end)]; %each start/end pair
nAdd = 2; %add two elements between
xnew = interp1((1:2)',x,linspace(1,2,2+nAdd)); %interpolate (2d linspace)
xnew = vertcat(reshape(xnew(1:end-1,:),[],1),x(end)) %keep non-duplicate parts
Amazing Trans
le 14 Août 2012
Modifié(e) : Amazing Trans
le 14 Août 2012
3 commentaires
Amazing Trans
le 14 Août 2012
Matt Fig
le 14 Août 2012
Please close out this question by selecting a best answer then post a new question and link back to this one.
Sean de Wolski
le 14 Août 2012
My answer handles your first scenario!
Amazing Trans
le 14 Août 2012
0 votes
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!