【问题标题】:Making a new matrix from existing matrix从现有矩阵制作新矩阵
【发布时间】:2014-12-16 13:37:45
【问题描述】:

我正在尝试在 C 中编写一些代码,它获取现有(之前制作的)矩阵的元素并从中创建一个新矩阵。想象一下,我有一个像R[1][303] 这样的矩阵,我想从中创建一个新矩阵,比如K[303 - n + 1][1],它将矩阵R 的元素从其列n 存储到其最后一列(即第303 列)。我在n上有一个for循环,我开始写的代码是这样的:

  for (n=1; n<=201; n++)
  {
    float K[303-n+1][1]=????
  }

如果我想用 Matlab 写,我会写:

  for n=1:201
  K=[];
  K(1:303-n+1,1)=R(n:end);
  end

但我不知道我必须如何写这部分

  R(n:end)

C 中。如果有人可以给我提示,我将不胜感激。

【问题讨论】:

  • 别误会,但你读过Create C Source MEX-File吗?如果你有,你应该能够为它生成某种 C 代码。然后你会问一个与你卡住的代码部分相关的问题。
  • 所以你的意思是把所有列从一个矩阵复制到另一个矩阵的行?
  • 您的 Matlab 代码没有意义,例如,您在每次迭代中都分配了 K(1,1)
  • Gopi,不是所有的列,在每次迭代中我想复制从 n 开始的列直到最后一列,并用它们制作我的新矩阵 (K) 的行。因此,在每次迭代中,新建矩阵的大小都会发生变化,例如 k[302]、K[301]、K[300]、...、k[103]。
  • 您的意思是将矩阵R中的n列复制到矩阵K中的行n,对于矩阵R中的每一行,矩阵K中的等效列?

标签: c matlab matrix


【解决方案1】:

我想这就是你要找的东西

#include <stdio.h>

int main(){

int R[1][10]={{0,1,2,3,4,5,6,7,8,9}};
int J[10][1];

//printf("ROW %d Column %d",sizeof(R)/sizeof(R[0]),sizeof(R[0])/sizeof(R[0][0]));
int i;

for(i=9; i >5; i--){
  J[i][0]=R[0][i];
}

for(i=6; i < 10; i++){
    printf("%d \n",J[i][0]);
}
return 0;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-13
    • 2011-09-05
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    相关资源
    最近更新 更多