将Matlab代码转换为C代码

时间:2012-03-01 18:09:39

标签: c matlab

我正在尝试理解和学习C语言,因为我曾经在Matlab工作,所以我很想知道这段代码将如何转换成C.

for j=1:n
  v=A(:,j);

  for i=1:j-1
    R(i,j)=Q(:,i)'*A(:,j);
    v=v-R(i,j)*Q(:,i);
  end

  R(j,j)=norm(v);
  Q(:,j)=v/R(j,j);
end

2 个答案:

答案 0 :(得分:3)

你知道Matlab Coder吗? Matlab可以为您自动生成c / c ++代码。它有其局限性,但如果试图从Matlab学习c,使用编码器应该是填充许多例子的最佳方式。

答案 1 :(得分:2)

声明和访问数组如下:

const int N = 10;   // needs to be a constant
double v[N];        // 1-d
double A[N][N];     // 2-d
v[0] = A[1][2];     // indexing starts at 0, not 1

C不像matlab那样进行自动矢量化,所以你必须手动进行for循环。而不是R(i,j)=Q(:,i)'*A(:,j)

for (int k = 0; k < N; ++k) {
    R[i][j] += Q[k][i] * A[k][j];
}

最后一篇文章也演示了for循环的样子 - “for”的第一个“参数”是索引变量k的初始化,第二个设置for循环继续的条件,第三个增量k。要在循环中执行的代码用大括号{}。

括起来

主要的逻辑区别是你必须在C中逐个元素地完成所有事情。