Concatenate matrix numbers linspace
显示 更早的评论
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 个评论
Azzi Abdelmalek
2012-8-13
what do you mean by
p = linspace(x(i),x(i+1),0.5)
采纳的回答
更多回答(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,[])
Sean de Wolski
2012-8-13
编辑:Sean de Wolski
2012-8-13
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
2012-8-14
编辑:Amazing Trans
2012-8-14
3 个评论
Amazing Trans
2012-8-14
Matt Fig
2012-8-14
Please close out this question by selecting a best answer then post a new question and link back to this one.
Sean de Wolski
2012-8-14
My answer handles your first scenario!
类别
在 帮助中心 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!