バナナでもわかる話

計量経済学・統計学が専門の大学院生です。統計学・経済学・投資理論・マーケティング等々に関する勉強・解説ブログ。ときどき趣味も。極力数式は使わずイメージで説明出来るよう心掛けていますが、時々暴走します。

C++で行列を転置させてみた

最近C++で数値計算が行えるよう練習中です。

今回は過去記事の続き
www.bananarian.net

スポンサーリンク



今回は、配列から行列を作って、それを転置させてみた。
うーん。一応出力は正しい値が出ていますが、もっと綺麗なコードを書きたい。
まあ、C++の勉強始めて少ししか経っていないので、これから頑張ります笑

ちなみに参考本はこちら



とりあえず下のように書いてみた。

	void TMa(float ma[N][M],float T_res[M][N]) {
		for (int nn = 0; nn < N; nn++) {
			float *x = ma[nn];
			for (int mm = 0; mm < M; mm++) {
				float *y = T_res[mm]+nn;
				float *xx = x + mm;
				*y = *xx;
			}
		}
	}

前のMatrixクラスに追加する形ですね。
入力の行列と、出力を保存する配列を指定してやる関数です。


出力してみます。

int main()
{
	Matrix MM;
	float mB[N][M] = { {2,3,3},{5,2,4} };
	float mat_res[N][M] = { {0,0,0},{0,0,0} };

	//行列の転置
	MM.PrintMa2(mB);
	cout << "転置すると" << endl;
	MM.TMa(mB, mat_res3);
	MM.PrintMa3(mat_res3);

出力

行列を表示する

2,3,3,
5,2,4,
転置すると
行列を表示する

2,5,
3,2,
3,4,

転置出来てますね。

今日は中々用事があって、あまり色々出来なかったので、こんな感じのやっつけ記事で~終わりです!
来週も用事続きで、あまり実のある更新は出来そうにありませんが、とりあえず日々何かしら投稿してこうと思います。