forループを使わない方法

7 visualizaciones (últimos 30 días)
貴弘
貴弘 el 3 de Mzo. de 2025
Comentada: 貴弘 el 3 de Mzo. de 2025
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を使わない形で表現できないかと考えておりますが,
良いアイデアがありません.
ご教示いただけないでしょうか?

Respuesta aceptada

Akira Agata
Akira Agata el 3 de Mzo. de 2025
テプリッツ行列を作成する関数 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 comentario
貴弘
貴弘 el 3 de Mzo. de 2025
ありがとうございます!
できました!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Multidimensional Arrays en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2023a

Community Treasure Hunt

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

Start Hunting!