[解決済み] MATLABでベクトルの線形スパンを求める
2022-02-14 03:03:20
質問
MATLABで与えられたベクトルのスパンを生成する方法を探しています。
例えば
もし
a = [ 0 1 0 1]
という形のすべてのベクトルが必要です。
[0 x 0 y]
1 <= x <= max1, 1 <= y <= max2,.
または
a = [ 0 1 0 1 1 0]
という形のすべてのベクトルが必要です。
[0 x 0 y z 0]
1 <= x <= max1、1 <= y <= max2、1<= z <= max3.
ベクトルは可変数の1を持つことができることに注意してください。
私の第一印象では、MATLABでそれが可能かどうかわからないが、可変数のforループが必要だろうと思っている。また、他のアイデアも歓迎します。
どのように解決するのですか?
この場合、複数のforループは必要ありません。以下のコードでは、必要なすべてのベクトルを背の高い行列の行として生成しています。これは実際には 列 の行列を1つずつ作成する。各列には1:m(i)の数字が、以下のようなパターンで配置されます。
- 各項は、m(i)以降のすべてのm個の数値の積に等しい回数だけ繰り返される。
- パターン全体が, m(i) より前のすべての m-数値の積に等しい回数だけ繰り返される.
これは
repmat(kron(1:m(i),ones(1,after)),1,before)'
を実行します。(R2015aからは
repelem
を置き換えることで、これを簡略化することができます。
kron
というコマンドがありますが、まだそのリリースはありません)。
a = [0 1 0 1 1 0];
m = [2 4 3]; // the numbers max1, max2, max3
A = zeros(prod(m), length(a));
i = 1; // runs through elements of m
for j=1:length(a) // runs through elements of a
if (a(j)>0)
before = prod(m(1:i-1));
after = prod(m(i+1:end));
A(:,j) = repmat(kron(1:m(i),ones(1,after)),1,before)';
i = i+1;
end
end
出力します。
0 1 0 1 1 0
0 1 0 1 2 0
0 1 0 1 3 0
0 1 0 2 1 0
0 1 0 2 2 0
0 1 0 2 3 0
0 1 0 3 1 0
0 1 0 3 2 0
0 1 0 3 3 0
0 1 0 4 1 0
0 1 0 4 2 0
0 1 0 4 3 0
0 2 0 1 1 0
0 2 0 1 2 0
0 2 0 1 3 0
0 2 0 2 1 0
0 2 0 2 2 0
0 2 0 2 3 0
0 2 0 3 1 0
0 2 0 3 2 0
0 2 0 3 3 0
0 2 0 4 1 0
0 2 0 4 2 0
0 2 0 4 3 0
関連
-
[解決済み] MATLABでctrl+Aを使わずにすべてのコードを自動インデントする
-
[解決済み] Matlabのfprintfを使用してテーブルを作成する
-
[解決済み] Matlabで列ベクトルを反復処理する方法は?[重複].
-
[解決済み] Matlabでcorr2関数を説明する
-
[解決済み] エラー「Improper assignment with rectangular empty matrix」の解決方法を教えてください。
-
[解決済み] 減衰比一定の直線と根元の軌跡との交点を求めるためのrlocfindの代替プログラム(Matlab
-
[解決済み] 入力引数が多すぎる Matlab ode45
-
[解決済み] Matlabでベクトルを表示(印刷)するには?
-
[解決済み] std::vector にある項目が存在するかどうかを調べるには?
-
[解決済み】C++のVectorをforループで反復処理する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】2つのベクトル間の角度 matlab
-
[解決済み] MATLAB: symからlogicalへの変換ができない
-
[解決済み] matlabでrandnを持つ確率変数の範囲はどうなっていますか?
-
[解決済み] matlabの*と.*の違いは何ですか?
-
[解決済み] Matlab - 連立方程式を解くときにvpasolveエラーが発生する
-
[解決済み] MATLABによるパワーメソッド
-
[解決済み] MATLABとラスタープロット
-
[解決済み] Matlabでファイル名を変更する - movefileがファイルの代わりにフォルダを作成する
-
[解決済み] MATLABで音を止めるには?
-
[解決済み] MATLABのコードヘルプです。バックワードオイラー法