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!