How to fix error in port widths or dimentions on the reshape block input?

Technical Source
2 min readSep 29, 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. ‘Output Port 1’ of ‘untitled/2-D IDCT’ is a [512x512] matrix.

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.

ANSWER

Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.

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.

SEE COMPLETE ANSWER CLICK THE LINK

--

--

Technical Source

Simple! That is me, a simple person. I am passionate about knowledge and reading. That’s why I have decided to write and share a bit of my life and thoughts to.