Append multiple values in one variable

hello,
i read an image using
img=imread('612.jpg')
then convert this 512x512 matrix into one column
using
newimg=img(:);
this give me a single column value 786432x1
know i want to insert new picture value started from 786433 and proceed next..
This experiment apply for 500 pictures..

Answers (1)

Assuming the image are all the same size, 512x512, then I would "stack" them in the 3rd dimension, then convert everything to a vector at once. You don't mention how the variables are stored, the naming convention, etc, but it would go something like this
% Number of images
N = 500;
% Preallocate the 3d array
img_array = zeros(512,512,N);
% Loop to fill each "slice" in 3d
for ni = 1:N
img_array(:,:,ni) = ... % Here is where you need to figure out how to access each image
end
% Convert the whole thing to a vector. (This will be in the same order as if you had stacked them individual.)
img_vector = img_array(:);

7 Comments

img_array(:,:,ni) = ... % Here is where you need to figure out how to access each image
i can`t understand this line
after = what value should assign?
and where we assign that which picture folder we want to access?
You used this code to read one image:
img=imread('612.jpg')
Now you want to read hundreds of images, right?
But you haven't told us how those images are stored, what the naming convention is for the folders, or the files. So, it is not possible for us to help you with that, because we don't have the information.
The code I posted only solved what you asked for, which is how to "Append multiple values in one variable".
I suggest you open an new question, something like "How to read multiple files from a folder?" and give all the details about how your files are stored.
all images are store in same folder with size 512x512 and merge all theses images value into a single column
2nd image value will started at the end of first images value
Use the dir command to get a list of the files, then use a for loop to iterate over the files and append then like I showed.
img_array(:,:,ni) = ...
after = what value i will put?
i am a biggner in matlab
i store image data into excel file with the size of 786432x1
first file name is 1.csv second file is save as 2.csv upto 500 hundred files each file contain 786432x1 record
know a want to merge all these files in such a way that if first file end an 786432 row then second file record start at 786433 to 1572864
3rd image recored start at 1572865 and upto soo on
all 500 picture are in store in single file with one column
i want this..
% The number of files you have
N = 500;
% Length of each file
L = 786432;
% Preallocate the memory for the large file.
out = zeros(L,N);
% Loop over the input files, and store them
for ni = 1:N
filename = sprintf("%d.csv",ni); % This read 1.csv, 2.csv, 3.csv, etc, up to N.csv
out(:,ni) = readmatrix(filename);
end
% Write output as one long vector
writematrix(out(:),"long.csv");

Sign in to comment.

Categories

Asked:

on 18 Mar 2023

Commented:

on 19 Mar 2023

Community Treasure Hunt

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

Start Hunting!