How to fix error in port widths or dimentions on the reshape block input?
13 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Alexander Semenov
le 16 Mai 2021
Réponse apportée : Andy Bartlett
le 18 Mai 2021
I need to make DCT image compression in Simulink. Image size by default has 3 dimensions, so I used reshape tool to remove the third dimension. Color Space Conversion tool only accepts 3 dimensional images, so I used reshape again. When I try to run the simulation, I get two following errors:
Error in port widths or dimensions. 'Input Port 1' of 'untitled/Reshape1' has 786432 elements. This port does not accept the dimensions (or orientation) specified by the input signal.
I thought reshape was supposed to accept any matrix as an input.
0 commentaires
Réponse acceptée
Andy Bartlett
le 18 Mai 2021
The purpose of Simulink's Reshape block and MATLAB's reshape command is only to "reinterpret" the dimensions (aka size) of the signal/variable. The number of elements is not changed. The values as they would appear in the "flat memory" of the computer would also be unchanged.
Your usage doesn't fit the reshape behavior. Your input to the first reshape block has this many elements.
inputNumel = prod([512,512,3])
inputNumel =
786432
Your desired output has this 1/3 as many elements.
outputNumel = prod([512,512])
outputNumel =
262144
Since you are trying to change then number of elements, the reshape block is throwing an error.
One approach to solve this is to put the following code into a MATLAB Function block
function [Y,Cb,Cr] = splitData(u)
Y = u(:,:,1);
Cb = u(:,:,2);
Cf = u(:,:,3);
end
But there is probably a simpler way to achieve your high level goal using capabilities of Image Processing Toolbox.
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Computer Vision with Simulink dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!