MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by I Made on 4 Mar 2013

Hii all, i'm stuck with this formula, i kinda confused and don't understand it. Need help :

W = {W(i)= Img(k,j),i=k*M2+j, 0<=k<=M1, 0<=j<=M2}

the pseudocode says that, it was for converting two dimensional image matrix Img whose size is M1*M2, to a vector W of length M1*M2. But i feel kinda strange, take one example i had an image of M1=2 and M2=2 and i follow above formula it'll return

i=0*2+0,0*2+1,0*2+2 then 1*2+0,1*2+1,1*2+2 then 2*2+0,2*2+1,2*2+2

am i right? or maybe there is another explaination why it return 3x3 vector when we enter 2x2 image. I really wanted to know why this formula like this. Any help would be appreciated, sorry for my strange noob curiosity :(

*No products are associated with this question.*

Answer by Walter Roberson on 4 Mar 2013

Edited by Walter Roberson on 4 Mar 2013

Accepted answer

Yes you are correct, it should either be 0 < k <= M1 or 0 <= k < M1. The version in which 0 is allowed but M1 is not, would correspond to C array notation where the first array element is Img(0,0); the version in which 0 is not allowed but M1 is, would correspond to MATLAB array notation where the first array element is Img(1,1).

The MATLAB equivalent of the code can be written as

W = Img(:);

Answer by Jan Simon on 4 Mar 2013

The indices of your formula start at 0. So if M1 and M2 are 2, you get the elements at the indices 0, 1, and 2, which are 3 elements.

Btw, a corresponding Matlab implementation would be:

ImgT = Img.'; W = ImgT(:);

Assumed, that the data are stored in row order.

## 0 Comments