forループを使わない方法
7 ビュー (過去 30 日間)
古いコメントを表示
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を使わない形で表現できないかと考えておりますが,
良いアイデアがありません.
ご教示いただけないでしょうか?
0 件のコメント
採用された回答
Akira Agata
2025 年 3 月 3 日
たとえば以下のような方法はいかがでしょうか?(ちなみに 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)
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Multidimensional Arrays についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!