for文を用いた繰り​返し計算と、計算過程​を全て表示させる式に​ついて

조회 수: 57 (최근 30일)
grande
grande 2023년 5월 16일
답변: grande 2023년 5월 17일
MATLABで列を上から順に計算して、計算が終わったら次の列の計算をするループ文を作りたいのですが、上手く作れないので式などを用いて教えて頂きたいです。
順番はaの1列目を上から順に計算して、終わったら2列目を上から順に計算の順です。
もっと詳しくすると、aの1列目は、bとcの1つ目を使って計算。
2列目は、bとcの2つ目を使って計算。
また、for(ループ)文での途中の計算式をセル数分の空白を作って全て表示させたいです。
以下の式は、実際にやってみたものになります。
使用する式
x=(a-b)/c
a =
1 2 3 4
5 6 7 8
9 10 11 12
b =
20 21 22 23
c =
30 31 32 33
結果は4×4の行列で表示
イメージはこんな感じになります。
教えて頂けると幸いです。
返信転送

채택된 답변

Atsushi Ueno
Atsushi Ueno 2023년 5월 16일
a = [1 2 3 4; 5 6 7 8; 9 10 11 12];
b = [20 21 22 23];
c = [30 31 32 33];
for col = 1:size(a, 2)
x(:, col) = (a(:, col) - b(col)) / c(col); % aのn列目は、bとcのn番目を使って計算
disp([char(col+'0') '列目:']);
curcol = regexprep(num2str(a(:, col)'),'\s+',';');
disp(['x = (a - b) / c = ([' curcol '] - ' num2str(b(col)) ') / ' num2str(c(col))]);
x % 結果は4×4 (3x4?) の行列で表示
end
1列目:
x = (a - b) / c = ([1;5;9] - 20) / 30
x = 3×1
-0.6333 -0.5000 -0.3667
2列目:
x = (a - b) / c = ([2;6;10] - 21) / 31
x = 3×2
-0.6333 -0.6129 -0.5000 -0.4839 -0.3667 -0.3548
3列目:
x = (a - b) / c = ([3;7;11] - 22) / 32
x = 3×3
-0.6333 -0.6129 -0.5938 -0.5000 -0.4839 -0.4688 -0.3667 -0.3548 -0.3438
4列目:
x = (a - b) / c = ([4;8;12] - 23) / 33
x = 3×4
-0.6333 -0.6129 -0.5938 -0.5758 -0.5000 -0.4839 -0.4688 -0.4545 -0.3667 -0.3548 -0.3438 -0.3333

추가 답변 (1개)

grande
grande 2023년 5월 17일
ご丁寧な回答ありがとうございました。
うまく進めることができました。
また機会があればよろしくお願いいたします。

카테고리

Help CenterFile Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!