Lay one vector onto another

1 view (last 30 days)
Joschua Kraus
Joschua Kraus on 11 May 2018
Commented: Joschua Kraus on 11 May 2018
Say you had two row vector:
filter = [0 0 0 0 0 0 0 0 0 0 ];
values = [1 2 1];
And the goal is to "lay the vector values onto the vector filter" like this:
new_filter = [0 0 1 2 1 0 0 0 0 0];
Here being done onward from index 3, or any other index.
How would that work?
  2 Comments
Stephen23
Stephen23 on 11 May 2018
"Here being done onward from index 3, or any other index. How would that work?"
You said it yourself: using indexing. What have you tried so far?
Joschua Kraus
Joschua Kraus on 11 May 2018
This works:
filter + [zeros(1,index-1) vals zeros(1,length(filter)-(index-1)-length(vals))]
thought there might be a build-in function

Sign in to comment.

Answers (1)

Cathal Cunningham
Cathal Cunningham on 11 May 2018
One method would be a for loop
filter = [0 0 0 0 0 0 0 0 0 0 ];
values = [1 2 1];
startIdx = 3;
for i = startIdx:length(filter)-startIdx+1
new_filter = filter;
new_filter(i:i+length(values)-1) = values
end
Or you could try circshift
filter = [0 0 0 0 0 0 0 0 0 0];
values = [1 2 1];
startIdx = 3;
new_filter = filter;
new_filter(startIdx:startIdx+length(values)-1) = values
for i = 1:length(filter)
new_filter = circshift(new_filter,1)
end

Tags

Community Treasure Hunt

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

Start Hunting!