As per my understanding size of the image will depend on compression technique that we are using and also as header size will differs as per the technique.
Also, image = [im im] won’t be exact double of the size, as only no. of columns are doubled and rows are as it is.
For Eg.
I have one .jpg image say, im1 of size 84KB. When I read image using ‘imread’ it will be of 576x1024x3 uint8 (1.7MB approx.). After, im2 = [im1 im1], its size will be 576x2048x3 uint8 (3.53MB approx.).
After ‘imshow’ and saving image using saveAs, size of saved image will be different as per the format used. For .jpg it will be 65KB, .tif with compression it will be 1.46MB and .tif without compression it will be 2.15MB.
Also, if you write the image using ‘imwrite(im2,'outfile.tif')’ size will be more proper 3.34MB approx.. as it will store file exactly 576x2048x3 uint8.