Question: There is an error, so please correct it and rewrite the code error occured in below line image_matrix = reshape(image_matrix, [block_size, block_size, num_rows, num_cols]); An
There is an error, so please correct it and rewrite the code
error occured in below line
image_matrix = reshape(image_matrix, [block_size, block_size, num_rows, num_cols]);
An error occurred during the following : reshape Size argument must be a real integer
An error occurred during the following : reshape Size argument must be a real integer
An error occurred during the following : reshape Size argument must be a real integer
How should I fix this part?
Or teach me a new code to make a puzzle using Matlab!!!
Or teach me a new code to make a puzzle using Matlab!!!
% Read in the image file
image = imread('picture4.jpg');
% Divide the image into lines based on difficulty level (2x2, 4x4, or 6x6)
difficulty = 4; % Set the difficulty level (4x4 in this example)
[rows, cols, channels] = size(image);
num_rows = difficulty;
num_cols = difficulty;
block_size = rows / num_rows;
% Convert the image to a matrix and reshape it into the appropriate number of rows and columns
image_matrix = im2double(image);
image_matrix = reshape(image_matrix, [block_size, block_size, num_rows, num_cols]); ???????????????
% Shuffle the image
permutation = randperm(num_rows * num_cols);
image_matrix = image_matrix(:,:,permutation);
% Loop until the puzzle is solved
while true
% Display the current state of the puzzle
imshow(image_matrix);
% Prompt the user for their next move
row = input('Enter the row of the tile you want to move: ');
col = input('Enter the column of the tile you want to move: ');
% Check if the move is valid
if row < 1 || row > num_rows || col < 1 || col > num_cols
% Output a buzz sound and display a message if the move is not valid
sound(sin(1:1000),1000); % Output a buzz sound
disp('Invalid move. Please try again.');
else
% Swap the selected tile with the empty space if the move is valid
empty_row = find(all(all(image_matrix == 0, 1), 2), 1); % Find the row with the empty space
empty_col = find(all(all(image_matrix == 0, 2), 3), 1); % Find the column with the empty space
image_matrix(:,:,empty_row,empty_col) = image_matrix(:,:,row,col); % Swap the selected tile with the empty space
image_matrix(:,:,row,col) = 0; % Set the original position of the selected tile to be empty
end
% Check if the puzzle is solved
if isequal(image_matrix, reshape(image, [block_size, block_size, num_rows, num_cols]))
% Display the original image and exit the loop if the puzzle is solved
imshow(image);
break;
end
end
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
