Translating MATLAB code into C

2 views (last 30 days)
Hello guys, I was just wondering if anyone can help translate my code into C as I don't have MATLAB Coder . I am more familiar with MATLAB's array indexing and I believe that C's array indexing is a little too complicated for a beginner like me. I'd appreciate it if you could walk me through the steps..
I am currently stuck at these two lines and I believe C won't allow me to do array indexing the same way MATLAB does:-
b = a(x:x+1, y:y+1);
a(x:x+1, y:y+1) = b;
Here is my entire code :-
a = [1 2 3 4; 2 3 4 5; 3 4 5 6; 4 5 6 7];
c = dctmtx(2);
q_mtx = [16 11; 12 12];
for x = 1:2:M
for y = 1:2:N
b = a(x:x+1, y:y+1); %<----HOW DO I DO THIS IN C???
b = c*b*c';
b = b./q_mtx ;
a(x:x+1, y:y+1) = b;
end
end

Accepted Answer

Walter Roberson
Walter Roberson on 1 Mar 2015
for (xoff = 0, xoff <= 1, xoff++)
for (yoff = 0, yoff <= 1, yoff++)
b[yoff][xoff] = a[y+yoff][x+xoff];
That is, you use a loop. Unless you want to start into memcpy().
Notice that I reversed the order of the indices. C arrays are row-major instead of column-major.

More Answers (1)

Hiroshi Nakamura
Hiroshi Nakamura on 1 Mar 2015
Edited: Hiroshi Nakamura on 1 Mar 2015
Thank you so much Walter! I really appreciate it! One more question. What are y and x again in you loop? Also if I were to do it using memcopy, how would I go about doing it? Thanks again!
for (xoff = 0, xoff <= 1, xoff++)
for (yoff = 0, yoff <= 1, yoff++)
b[yoff][xoff] = a[y+yoff][x+xoff];

Categories

Find more on Labels and Annotations in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!