# concatenating arrays and matrix

7 views (last 30 days)
Matpar on 16 Aug 2019
Commented: Matpar on 17 Aug 2019
Hi all I trying to get a simple syntax to add this constant to image values
im=rgb2gray(im)
so now that im is now the gray scale image
i am try to add these values to the image
C1=[10,20,50,100]
Can profesional provide an example of how this is done in the simplest form using a for loop?

Matpar on 16 Aug 2019
yes i would like to conatenate the two please!
when you say where the vector should be inserted, i am not sure how to code from the syntax that was sent
please keep it simple as I am new to this and I am trying to get the understanding
Adam Danz on 16 Aug 2019
If your array is 5 x 5 you cannot concatenate a vector with only 4 elements!
Concatenation involves joining two arrays. Here are two examples.
% Horizontal concatenation
A = [1 2 3;
4 5 6];
B = [11 12 13;
14 15 16];
C = [A,B]
C =
1 2 3 11 12 13
4 5 6 14 15 16
% Vertical concatenation
C = [A; B]
C =
1 2 3
4 5 6
11 12 13
14 15 16
Notice that the size of A and B are equal in the dimensions being concatenated. Here's an example that would FAIL.
X = [1 2 3];
Y = [1 2 3 4];
Z = [X,Y]; % This works
Z2 = [X; Y]; % This doesn't work!
Matpar on 17 Aug 2019
Hi adam, it couldn't be clearer than that!! I understood thanx! I will get on it now

Walter Roberson on 16 Aug 2019
nd = ndims(YourImageArray);
Thresholded_arrays = bsxfun(@le, YourImageArray, reshape([50, 100, 150, 200], [ones(1,nd), 4]) );
Instead of @le you would use @plus
nd = ndims(YourImageArray);
Incremented_arrays = bsxfun(@plus, YourImageArray, reshape(uint8([50, 100, 150, 200]), [ones(1,nd), 4]) );

Matpar on 17 Aug 2019
Hi walter thanx for the info! how do you explain a mango to a child? this is what this is for me! i watch vids and read as much as i can but when i jump in! the questions I have usually gets me stuck and there is no one to ask but you guys!!
sometimes the responses I get here are so complicate it leaves me with more question, this puts me off as I myself is unsure of how things should work. Forgive me I will get there one day!
can you show me a simple for loop with this example please?
as for the mentioning the image description, my apologies!
and thanx in advance for assisting me!
Walter Roberson on 17 Aug 2019
C1 = [10,20,50,100];
numC1 = length(C1);
imgray = rgb2gray(imrgb);
[r, c] = size(imgray);
output = zeros(r, c, numC1, class(imgray)); %probably it will be uint8
for C1idx = 1 : numC1
this_C1 = C1(C1idx);
output(:,:,C1idx) = imgray + this_C1;
end
Matpar on 17 Aug 2019
ok i will try it! can you explain the output outside the forloop and inside the for loop? this what happens!! I understood everthing else and how do i make the code myself! i guess this comes with practice but I am willing to learn.
Walter! I must say you have loads of patience and experience!!! I will like to add how grateful I am for having you explain stuff for me in my mess of confusing concerning Matlab!
I am so thankful walter! thank you I appreciate you budz, really thanx much!