Concatenate matrix numbers linspace
Show older comments
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 Comment
Azzi Abdelmalek
on 13 Aug 2012
what do you mean by
p = linspace(x(i),x(i+1),0.5)
Accepted Answer
More Answers (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
on 13 Aug 2012
0 votes
Sean de Wolski
on 13 Aug 2012
Edited: Sean de Wolski
on 13 Aug 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
on 14 Aug 2012
Edited: Amazing Trans
on 14 Aug 2012
3 Comments
Amazing Trans
on 14 Aug 2012
Matt Fig
on 14 Aug 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
on 14 Aug 2012
My answer handles your first scenario!
Amazing Trans
on 14 Aug 2012
0 votes
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!