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

57 visualizzazioni (ultimi 30 giorni)
grande
grande il 16 Mag 2023
Risposto: grande il 17 Mag 2023
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の行列で表示
イメージはこんな感じになります。
教えて頂けると幸いです。
返信転送

Risposta accettata

Atsushi Ueno
Atsushi Ueno il 16 Mag 2023
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

Più risposte (1)

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

Categorie

Scopri di più su Resizing and Reshaping Matrices in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!