需要帮助将MATLAB代码转换为C语言

时间:2015-02-28 15:50:25

标签: c matlab

我无法将以下代码转换为C,因为C中的数组索引格式与MATLAB略有不同。如果我能得到一些指针(得到它?)作为如何翻译下面的代码,我将非常感激。我只是坚持以下几行,因为C中的索引不允许我这样做: -

b = a(x:x+1, y:y+1);
a(x:x+1, y:y+1) = b;

我的代码: -

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

非常感谢您的帮助!谢谢!

1 个答案:

答案 0 :(得分:1)

据我所知,没有用于下标数组的内置运算符。 因此,您可以查找合适的库(我认为,对于2D数组,某些图像处理库可以工作,如OpenCV),或者编写一个代码。

您感兴趣的行很容易翻译成C.

如果在Matlab中你有b = a(x:x+1, y:y+1);,那么C就会有四行:

b[0][0]=a[x][y];
b[1][0]=a[x+1][y];
b[0][1]=a[x][y+1];
b[1][1]=a[x+1][y+1];

这里我假设您静态定义了数组(正如您在注释中所写的那样)。 这是Matlab的一个优点 - 使用矩阵非常方便。

编辑:关于您在评论中的问题,对于更大的尺寸,您可以使用for循环:

Matlab代码b = a(x:x+32, y:y+55)将对应

for(int i=0;i<32;i++)
     for(int j=0;j<55;j++)
         b[i][j]=a[x+i][y+j];