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

1 view (last 30 days)
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

Star Strider
Star Strider on 19 Oct 2018
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

Sign in to comment.

More Answers (2)

YT
YT on 19 Oct 2018
I think you meant to do
allIDs(i,:)
  1 Comment
Skyer
Skyer on 19 Oct 2018
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.


Guillaume
Guillaume on 19 Oct 2018
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
Skyer
Skyer on 19 Oct 2018
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.

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Products


Release

R2018a

Community Treasure Hunt

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

Start Hunting!