n = 1;
d = 2;
Phi = eye(n+d+1);
Phi_b = [1;2];
for k = 1:d
Phi(k+1:k+n+1,k) = Phi_b;
end
上記のような単位行列Phiの特定の位置にPhi_bを入れるようなプログラムがあります.
処理の都合上をforを使わない形で表現できないかと考えておりますが,
良いアイデアがありません.
ご教示いただけないでしょうか?

 Réponse acceptée

Akira Agata
Akira Agata le 3 Mar 2025

2 votes

テプリッツ行列を作成する関数 toeplitz を使うとできそうです。
たとえば以下のような方法はいかがでしょうか?(ちなみに n と Phi_b は独立ではないため、以下では n を 1 としています)
% d, Phi_b の一例
d = 3;
Phi_b = [1;2];
% テプリッツ行列を作成
c = [1; Phi_b; zeros(d-1, 1)];
r = [1, zeros(1, d+1)];
Phi = toeplitz(c, r);
% (end, end-1) の要素だけテプリッツ行列と異なるため修正
Phi(end, end-1) = 0;
% 結果を表示
disp(Phi)
1 0 0 0 0 1 1 0 0 0 2 1 1 0 0 0 2 1 1 0 0 0 2 0 1

1 commentaire

貴弘
貴弘 le 3 Mar 2025
ありがとうございます!
できました!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur 起動と終了 dans Centre d'aide et File Exchange

Produits

Version

R2023a

Community Treasure Hunt

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

Start Hunting!