Append multiple values in one variable
Show older comments
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)
the cyclist
on 18 Mar 2023
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
Sara Ejaz
on 19 Mar 2023
the cyclist
on 19 Mar 2023
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.
Sara Ejaz
on 19 Mar 2023
the cyclist
on 19 Mar 2023
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.
Sara Ejaz
on 19 Mar 2023
Sara Ejaz
on 19 Mar 2023
the cyclist
on 19 Mar 2023
% 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");
Categories
Find more on File Operations in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!