行列は動的配列、つまりdouble * inputMatとして格納されています。私は、特定の列を抽出できる行と列の数を知っています。今問題は、私は抽出され、別の動的配列に格納される列のセットを持っているということです。これを行う方法?は行列から特定の列を抽出し、Cの新しい行列として格納します
double *extractMatrix(double *inputMat,int rows, int *columnIndex, int columnTotal)
{
double *outputMat=malloc(sizeof(double)*rows*columnTotal);
for(int i=0; i<columnTotal; i++)
memcpy(outputMat, &inputMat[rows*columnIndex[i]],rows*sizeof(double));
return outputMat;
}
columnIndexには、行列から抽出する列のインデックスが含まれています。 ColumnTotalはcolumnIndex配列のサイズです。しかし、これはinputMatの特定の1つの列だけをoutputMatにコピーし、おそらく上書きされます。私はcolumnIndexのすべての列の完全な配列を必要とします。私はlapackとBLASライブラリを扱っています。これを行うための組み込み方法がある場合は、共有してください。
何もありません。 colはinputMatの列数を表します。現在のシナリオでは必要ありません。私はそれを削除します。編集されたバージョンをご覧ください。 – user402940
'memcpy(outputMat、...'デスティネーションは常に同じ、 'i'で変更する必要があります。 – chux
' double * 'をパラメータとして渡す場合、' rows'と 'columnTotal'はなぜ必要なのですか?あなたは本質的に倍精度*の配列を持っています(技術的には*倍精度*へのポインタでもありますが、単に 'size'と' columnIndex'というポインタが必要です)。インデックスを作成して、好きなように列を抽出することができます。 –