How do I add values to a vector instead of replacing them?

Hey I'm trying to combine all IDs for pictures into a vector to use in a function but when I write this loop the values get replaced and i only get the value of the last i.
for i = 1:(length(p))
allIDs = [p(i) ImageIDs(1) ImageIDs(2) ImageIDs(3) ImageIDs(4)];
end
If I write "allIDs(i)" instead I get an error message saying they aren't compatible. How can I write this loop instead? Any help would be appreciated.

 Accepted Answer

Use a row and ‘default’ column subscript for allIDs:
allIDs(i,:) = [p(i) ImageIDs(1) ImageIDs(2) ImageIDs(3) ImageIDs(4)];
That should work.

4 Comments

Thanks for the answer, but I want them all to be on a single row in the new vector. Is this possible to do?
I am not certain what you want, and I have no idea what size ‘ImageIDs’ is or what it contains or how you want to address its contents in each loop iteration.
One option (generally not recommended because it is extremely inefficient) is to ‘grow’ the vector by concatenating it with new values:
allIDs = [];
for i = 1:(length(p))
allIDs = [allIDs, p(i) ImageIDs(1) ImageIDs(2) ImageIDs(3) ImageIDs(4)];
end
That will produce one long vector in the end.
Thank you! You've saved my friday evening.

Sign in to comment.

More Answers (2)

I think you meant to do
allIDs(i,:)

1 Comment

Thanks for the answer, but I want them all to be on a single row in the new vector. Is this possible to do?

Sign in to comment.

All the answers assume you want to create a matrix, I'm not sure that's what you want since you mention a vector. In any case, I see nothing in the code given that warrants a loop, so allIDs as a matrix could be created in one fell swoop with:
allIDs = [p(:), repmat(ImageIDs(1:4), numel(p), 1)];
As said, I'm not convinced that's what's desired but if it's not a better explanation is required, in particular, an explanation of what p and ImageIDs are (size, type).

1 Comment

Thanks for the answer. I get an error message "Error using horzcat Dimensions of arrays being concatenated are not consistent." using this. Do you know what it means and how to fix it?

Sign in to comment.

Products

Release

R2018a

Asked:

on 19 Oct 2018

Commented:

on 19 Oct 2018

Community Treasure Hunt

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

Start Hunting!