Lay one vector onto another

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 commentaires

Stephen23
Stephen23 le 11 Mai 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?
This works:
filter + [zeros(1,index-1) vals zeros(1,length(filter)-(index-1)-length(vals))]
thought there might be a build-in function

Connectez-vous pour commenter.

Réponses (1)

Cathal Cunningham
Cathal Cunningham le 11 Mai 2018

0 votes

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

Catégories

En savoir plus sur Characters and Strings dans Centre d'aide et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by