基本上,我在C中将这个问题描述为here(针对结构化文本)。
所以在C语言中,我可以这样做,将向量c复制到矩阵行a中:
int a[100][100];
int c[10][10];
int i;
for(i = 0; i<10; i++)
{
memcpy(&a[i], &c[i], sizeof(c[0]));
}
如何在结构化文本中执行此操作?到目前为止,我的类比方法行不通。 (编译器错误:字段a的索引减少了。)
VAR
a: ARRAY[0..99,0..99] OF REAL; (*2D array*)
c : ARRAY[0..99] OF REAL; (*1D array*)
END_VAR
FOR i:=0 TO 99 DO
memcpy(ADR(a[i]), ADR(c[i]), SIZEOF(c[0]));
END_FOR
答案 0 :(得分:0)
您是否要将c复制到a中?
对于数组,您需要两个索引,如下所示:
memcpy(ADR(a [i,0]).....
请测试。我相信这是我记得的方式,但不是我的计算机。
答案 1 :(得分:0)
如果我很好理解,您想将1维数组(1x99 = 99个元素)复制到99维数组(99x99 = 9801个元素)。您可以在列的第一行(或反之亦然)中复制第一个数组(一维),在第二行中复制第二个数组……等等。
如果这是您的海豚,则可以尝试以下代码:
VAR
i: INT; //auxiliar
j: INT; //auxiliar
origin : ARRAY[0..9] OF REAL; //origin data
destiny: ARRAY[0..9,0..9] OF REAL; //destiny
END_VAR
FOR i := 0 TO 9 DO
FOR j := 0 TO 9 DO
//Copy the origin array to the first column, second, etc of destiny array
destiny[i,j] := origin[i];
END_FOR;
END_FOR;
我已经在我的计算机上(使用codesys)对其进行了测试,并且可以正常运行,但是我不知道您是否正在寻找...