在我的项目中,我有一个11X24的矩阵,但是我需要将它转换/合并/连接到35X11的矩阵表示35行和24列。
我需要的是添加24行,然后添加另一个矩阵的11行,就像在Matlab中的水平串联一样。
计算第一个矩阵的方式由下面的代码给出,它是由双复数定义的复杂矩阵
//take real and imaginary part to build e_m matrix
re = fopen("realpart.txt","r");
for(i=0;i<ROWS;i++){
for(j=0;j<COLS;j++){
fscanf(re,"%lf",&real[i][j]);
}
}
fclose(re);
im = fopen("imagepart.txt","r");
for(i=0;i<ROWS;i++){
for(j=0;j<COLS;j++){
fscanf(im,"%lf",&imag[i][j]);
}
}
fclose(im);
//compute e_m matrix
for(i=0;i<ROWS;i++){
for(j=0;j<COLS;j++){
e_m[i+ROWS*j].r = real[i][j];
e_m[i+ROWS*j].i = imag[i][j]; //defined cols-by-cols (i.e. z[0][1] is z[35])
}
}
两个.txt文件正在读取文件,并且输出的是附加到此帖子的e_m.txt文件。要连接它我使用以下代码:
for(d=0;d<ord1;d++){
for(j=0;j<COLS;j++){
if(d>23){
e_mm[d+ord1*j].r = real[i][j];
e_mm[d+ord1*j].i = imag[i][j]; //defined cols-by-cols (i.e. z[0][1] is z[35]
}
else
e_mm[d+ord1*j].r= 0;
e_mm[d+ord1*j].i= 0;
}
}
FILE* file7=fopen("/dev/conc.txt","w");
for(i=0;i<ord1;i++){
for(j=0;j<COLS;j++){
fprintf(file7,"%lf\t %lf\t", e_mm[i+ord1*j].r,e_mm[i+ord1*j].i);
}
fprintf(file7,"\n");
}
fclose(file7);
for(i=0;i<ord1;i++){
for(j=0;j<COLS;j++)
if (i>23) {
concat[i].r=e_m[i].r;
concat[j].i=e_m[j].i;
}
else
concat[i].r = 0;
concat[j].i = 0;
}
FILE* file8=fopen("/dev/concat.txt","w");
for(i=0;i<ord1;i++){
for(j=0;j<COLS;j++){
fprintf(file8,"%lf\t %lf\t", concat[i].r, concat[j].i);
}
fprintf(file8,"\n");
}
fclose(file8);
*/
某些可靠的声明在这里..因为代码是一个长度,这就是为什么我包含了整个代码。
doublereal real[ROWS][COLS]; //real coefficient to build E_m matrix
doublereal imag[ROWS][COLS]; //imaginary coefficient to build E_m matrix
doublereal real1[ROWS][COLS]; //real coefficient to build E_m matrix by me
doublereal imag1[ROWS][COLS];
doublecomplex e_m[ROWS*COLS];
ROWS = 11;
integer COLS = 24;
integer ldvt=COLS;
integer ord1 = 35;doublecomplex e_m[ROWS*COLS];
doublecomplex e_mm[ord1*COLS];
doublecomplex e_m1[ord1*COLS];
编辑的代码行
//take real and imaginary part to build e_m1 matrix
re1 = fopen("realpart.txt","r");
for(d=23;d<ord1;d++){
for(j=0;j<COLS;j++){
fscanf(re1,"%lf",&real1[d][j]);
}
}
fclose(re1);
im1 = fopen("imagepart.txt","r");
for(d=23;d<ord1;d++){
for(j=0;j<COLS;j++){
fscanf(im1,"%lf",&imag1[d][j]);
}
}
fclose(im1);
for(d=0;d<ord1;d++){
for(j=0;j<COLS;j++){
if(d<24) {
e_m1[d*COLS+j].r = 0;
e_m1[d*COLS+j].i = 0; //defined cols-by-cols (i.e. z[0][1] is z[35])
}
else {
e_m1[d*COLS+j].r = real1[d][j];
e_m1[d*COLS+j].i = imag1[d][j];
}
}
}
FILE* file5=fopen("/dev/e_m1.txt","w");
for(d=0;d<ord1;d++){
for(j=0;j<COLS;j++){
fprintf(file5,"%.3f\t %.3f\t",e_m1[d*COLS+j].r,e_m1[d*COLS+j].i);[![enter image description here][4]][4]
}
fprintf(file5,"\n");
}
fclose(file5);