Simulink-Coder image data representation in C

1 view (last 30 days)
Hello, I have a question related to an image representation out of Matlab Simulink Coder. If I have a Simulink block with an RGB image output size for instance 320x240x3, I get in my generated code an array with the size "img[230400]". My question is now, if I want to write this array to an .ppm-file-format, how do I have to iterate over this array to get a row based rgb order and see the image.
Thanks in advanced.

Accepted Answer

Alain Kuchta
Alain Kuchta on 12 May 2017
Edited: Alain Kuchta on 12 May 2017
Assuming img is an I x J x K array, the array element given in MATLAB by:
img(i,j,k)
can accessed in the generated C code at:
img[(k-1)*(J*I) + (j-1)*I + (i-1)];
For a more detailed explanation of how matrices and arrays are stored in generated code, refer to the following documentation:
  1 Comment
FJS
FJS on 13 May 2017
Thank's, that helped. Column based thinking was the tricky part. Here is my solution:
for(int i = 1; i <= dimy; i++)
for(int j = 1; j <= dimx; j++)
for(int k = 1; k <= channel; k++)
fprintf(fp,"%d ",img[(k-1)*(dimx*dimy)+(j-1)*dimy+(i-1)]);

Sign in to comment.

More Answers (0)

Categories

Find more on Deployment, Integration, and Supported Hardware in Help Center and File Exchange

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!