Error using vertcat Dimensions of arrays being concatenated are not consistent.
2 views (last 30 days)
Show older comments
My problem is I am trying to compress and decompress an image file using Huffman Coding,
here is the code where I get the error "Error using vertcat Dimensions of arrays being concatenated are not consistent." I undelined the part where the code is not running
% Compress function
function compressed_data = compress_image(image)
% Convert the image to a 1D array
image = image(:);
% Calculate the frequency of each pixel value
freq = histcounts(image, unique(image));
% Create a cell array to store the pixel values and their corresponding frequencies
pixel_freq = num2cell(freq);
pixel_val = num2cell(unique(image));
pixel_data = [pixel_val; pixel_freq];
% Sort the pixel data based on frequency
[~, sort_index] = sort(freq, 'descend');
sorted_pixel_data = pixel_data(:, sort_index);
% Generate the Huffman code dictionary
huffman_dict = generate_huffman_dict(sorted_pixel_data);
% Encode the image using Huffman coding
encoded_data = encode_image(image, huffman_dict);
% Pack the compressed data as a struct
compressed_data = struct('image_size', size(image), 'huffman_dict', huffman_dict, 'encoded_data', encoded_data);
end
0 Comments
Answers (2)
Image Analyst
on 23 May 2023
pixel_val and pixel_freq have different number of columns -- check it for yourself -- so you cannot stitch them together vertically, one atop the other.
Also, "image" is a built-in function so you must not destroy it by using it as a variable name.
0 Comments
Walter Roberson
on 23 May 2023
histcounts() returns row vectors whereas unique() of a non-row returns a column vector. (Unique of a row vector returns a row vector.)
You used
image = image(:);
so image is not a row vector, so unique() is going to return a column vector.
With histcounts returning a row vector and unique returning a column vector, vertcat of the two cannot work.
3 Comments
Image Analyst
on 23 May 2023
There is no reason for you to do that in the first place. It is simply not needed.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!