問題タブ [4d]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
653 参照

matlab - Matlab での 4 次元ルール テーブルの単純化: 各次元の行と列のアドレス指定

私は現在、観測ごとに 4 つの値を含む一連の観測に対して一連のファジー ルールを自動的に生成しようとしています。各観測は状態に対応します (良い例はフィッシャーのアイリス データです)。

Matlab では、単一のセル (a、b、c、d) に対応する状態が含まれる 4 次元ルール テーブルを作成しています。表を縮小するために、行と列の類似性チェックのHong と Leeの方法に従っていますが、3 番目と 4 番目の次元の行と列に対処する方法を理解するのが困難です。この方法から、各次元が個別に扱われ、ルールが真の場合、テーブルが単純化されていることが理解できます。マージのルールは次のとおりです。

  1. 隣接する列または行のすべてのセルが同じ場合。
  2. 2 つのセルが同じ場合、または隣接する
    列または行でいずれかが空で、両方のセルの少なくとも 1 つが空でない場合。
  3. 列または行のすべてのセルが空で、
    隣接する 2 つの列または行のセルが同じ場合、3 つを結合します。
  4. 列または行のすべてのセルが空で、
    隣接する 2 つの列または行のセルが同じであるか、いずれかが空の場合、3 つを結合します。
  5. 列または行のすべてのセルが空で、
    その左側の列または行のすべての空でないセルが同じ領域を持ち、その右側の列または行のすべての空でないセルが同じ領域を持つ場合、ただし前述のリージョンとは 1 つ異なりますが、これら 3 つの列を 2 つの部分にマージします。

紛らわしいビットのために今。行/列全体が隣接するものと同じかどうかを確認するだけ (ルール 1) は、十分に単純に思えます。

これは正しいです?

しかし、行/列の要素が一致するかどうか、またはどちらかがゼロであるかどうか (ルール 2 および 4) を確認するには、少し迷っています。それはこれらの線に沿ったものでしょうか:

3 番目と 4 番目の次元については、次のようになります。

私は3つ以上の考えにとても混乱しているので、4次元配列の助けさえあれば役に立ちます! 私の意味を理解するために論文を読むことをお勧めします.彼ら自身は虹彩データを使用していますが、2Dテーブルの例しか示していません.

0 投票する
4 に答える
895 参照

java - Java で最速のデータ構造 (4D ビジュアライゼーションの処理)

視覚化フレームワークを使用する必要があるアプリケーションがあります。私は現在、Javaデスクトップアプリで使用するための処理に傾いています。

問題: 視覚化する必要がある状態ベクトルが 50 万以上あります。4D ポイント - XYZ と時間 (GPS のようなもの)

タイム スライスをすばやく簡単に選択できるようにする必要があり、それらを時間内に再生する機能も備えている必要があります。フラットファイルまたはデータベースを使用して、入力を変更できます。

問題は、どのデータ構造が私のニーズに最も適しているかということです。ファイルを Arraylists に読み込みますか? ハッシュマップ?それともインメモリデータベース?または、他の何か?

3D での視覚化にはパフォーマンスが不可欠です。時間は8時間以上。そのため、すべてが一度に表示されるわけではありません。

この種の使用のためにクリエイティブなコーディング フレームワークを使用しようとした人はいますか? 助言がありますか?

ありがとう!

0 投票する
2 に答える
1956 参照

3d - 4Dマトリックスで2Dポイントを乗算する方法

2Dポイント(またはZ = 0の3D)を4Dマトリックスの2Dポイント(Zは無視される)に変換するにはどうすればよいですか?

MicrosoftのSilverlightを使用して、Matrix3DのMatrix3D定義を使用して2Dコントロールを疑似3Dとして投影しています 。

変換されていないコントロールのポイントの初期2D座標がわかっているので、変換後のポイントの2D位置が必要です。

Silverlight APIは、3Dメソッドに関してはまばらです。

計算を実行するための基本的な数学を提案してください。

これは、Silverlight固有の質問の続きです

詳細を編集する

動いていない。使ってます

入力xとyは0,0であり、結果x、yは0、58.5786です。

これにより、Zで45度の角度の回転が生成されます。ここで、回転点は平面の下部です。

OffsetXを含むすべてのM1n値は0.0であるため、xは常に元の値になります。

私は何を間違っているのですか?

上記の計算結果を含む4つの値の例を次に示します。

結果の画像を見ると、400x400平面の左上は45,135、右上は355,135、左下は0,400、右下は400,400です。

したがって、テスト値が0,0,0,1.0の場合、xとyは45,135になると予想されます。

0 投票する
1 に答える
5645 参照

matlab - 4D カーブ フィッティング

私はMatlab r2010bでSurface fitツールボックスを使用して、3次元データをカーブフィットしています。このツールは、GUI を介して 3D カーブ フィッティングを行うための非常に便利で簡単なツールです。今まで3Dデータを扱っていたのですが、(X 入力 : x (nx 1 ベクトル)、Y 入力 : y (nx 1 ベクトル)、Z 出力 : z (nxn 行列))

しかし今、私は次のような 4 次元データを処理しようとしています。(X 入力 : x (nx 1 ベクトル)、Y 入力 : y (nx 1 ベクトル)、Z 入力 : z (nx 1 ベクトル)、および T 出力 : t (nxnxn 行列))。

サーフェス フィッティング ツールボックスではこれを達成できません。4 次元データでカーブ フィッティングを行うにはどうすればよいですか?

これに関する助けに感謝します。

0 投票する
1 に答える
776 参照

c++ - 4次元隠面消去

小さな4Dゲームをプログラムしようとしています。C++ と OpenGL を使用しています。この Web サイトでは、4d 画像を強化する方法について適切な説明が提供されています

彼らは、4d Hidden Surface Removal (HSR) アルゴリズムを適用するよう指示しています。
私はプログラミングとアルゴリズムの初心者であり、4D HSR も 3D HSR もどこから始めればよいかまったくわかりません。
誰かがそのようなアルゴリズムの経験を持っているなら、それを C++ に翻訳する方法を説明できますか?

ところで:私は 4d 空間を 3d で投影するので、ピクセルの変更ではなく、頂点を削除するためのアルゴリズムが必要になるか、少なくとも私が考えていることです...私は間違っている可能性があります...

0 投票する
3 に答える
8079 参照

matlab - Matlab: Plot3 で 3 番目の軸が表示されない

プロットに使用している 3 つの変数はすべて size の行列です1x1x100。このコード行を使用してプロットしています:

ただし、3 番目の軸を取得していないためCO2_molefraction_top_of_window、プロットの 3 番目の変数が得られません。どこが間違っているか分かりますか?

上記の質問に加えて、同じ件名で、を使用して描画できる3次元プロットと同じように4次元プロットをプロットできるオプションがあるかどうか知りたいplot3ですか?

0 投票する
1 に答える
3907 参照

matlab - データ カーソルを使用した 4D プロット表示変数 Matlab

プロットに 4 つの変数を表示する方法がわかりません。

従属変数 Y と Z を生成するために、独立変数 X、V を変化させたいと考えています。Y は X AND V の関数です。Z は Y AND X の関数です。

X、V、Y(X,V)、Z(X,Y(X,V)) の依存関係を確認しやすい場合があります。

surf 関数を使用して X、Y、Z をプロットしましたが、現在確認できない V の値も知りたいです。

説明するためのテストデータを次に示します。

データ カーソルを使用すると、X、Y、Z の値を確認できますが、V の値も知りたいです。2 つのプロットを作成すると、 :

次に、データ カーソルを使用して、両方のグラフの X と Z の同じ点に移動します。V と Y の値は、その点 (X,Z) の値になります。

2 つの個別のグラフを生成することなく、X、Y、V、および Z の値を表示する方法はありますか?

ありがとう!

0 投票する
3 に答える
963 参照

cuda - GPU での 4D データのセグメンテーション

私が直面している問題は、大規模なデータセット (最大 2048x2048x40x10000 x、y、z、t == 解凍された数テラバイト、ギブまたはテイク) をセグメント化することです。プラス面として、このデータセットの機能はかなり小さいです。最大20x20x20x20程度。

私が見る限り、これに対するすぐに使えるソリューションはありません(間違っている場合は修正してください)。これに対処する方法についてはいくつかの計画がありますが、フィードバックをお願いします。

1 つのタイムスライスは最大 600 MB です。典型的な状況下では少ない; 私は 4 GB メモリに一連のそのようなスライスを保持できます。

私の特徴のサイズが小さいことを考えると、私の直感では、あらゆる形式のセグメンテーションの巧妙さを避け、ラベルに対してローカルで反復的なフラッドフィルのような更新を行うのが最善であると考えています。隣人がより高いラベルを持っている場合は、それをコピーします。収束するまで繰り返します。反復回数は、任意の次元の最大クラスター サイズによって制限される必要がありますが、これも小さくする必要があります。

CUDA は自然に 3D を好むため、これを 2 段階のプロセスとして行うことができます。まだ収束していないすべての 3D ボリューム スライスを繰り返します。次に、連続するすべてのタイム スライスに対して単純に要素ごとのループを実行し、同じフラッディング ロジックを実行します。

単純なインクリメント ユニーク カウンターで反復を初期化するか、最初に極大値を見つけてそこにラベルをシードすることができます。後者が優先されるため、ラベルでインデックス付けされた配列を保持して、すべての領域の x、y、z、t の最小/最大範囲を格納できます (後処理としても実行できます)。リージョンが最新のタイムスライスまで拡張されていない場合、そのリージョンはデータから消去され、その場所がデータベースに書き込まれます。末尾のタイムスライスがそのように完全に使い果たされた (合計がゼロになる) 場合は、メモリから削除します。(または、メモリがオーバーフローした場合は、最新のものも削除します。このようにして作成された近似は我慢する必要があります)

それはうまくいくようです。z 次元のサイズが限られていることを考えると、x、y、z スレッドブロックを起動するか、x、y ブロックを起動して各スレッドを z 次元でループさせる方がよいと思いますか? それは「試してみる」ようなものですか、それともそれに対するストックアンサーはありますか?

私が思いついた別の最適化。x、y、z のブロックを共有メモリにロードした場合、とにかくそこにメモリを取得している間に、いくつかのフラッドフィル更新を実行する方が高速ではないでしょうか? おそらく、ローカルメモリを収束まで反復させてから先に進むのが最善です...それは、私が推測する上記の問題に関連しています。単一の近隣最大ルックアップは、おそらく次善の計算強度であるため、z をループするか、数回反復することでそれを相殺する必要があります。私は後者の方が好きだと思います。

別の質問です。このようなものはまだ存在していないようですが、同様のことを行うテンプレート コードを含むプロジェクトへのリンクは高く評価されます (最適化された 3D フラッドフィル コード?)。私の CUDA の知識はまだむらがあります。

ご意見やフィードバックをお寄せいただきありがとうございます。

0 投票する
1 に答える
1985 参照

matlab - 複数の 3d dicom ファイルを読み込んで、matlab で経時的に表示する方法 (4d)

3D MRI dicom 画像 (異なる時間間隔 t1、t2 などで撮影) のフォルダーが 30 個あります。各フォルダは、2D dicom 画像 (約 30 枚の画像) で構成されています。これらを 4D ムービー (経時的な 3D) として表示する必要があります。私は、matlab で dicom 画像を扱うのが初めてです。これで私を助けてくれませんか。よろしくお願いします

0 投票する
1 に答える
1564 参照

matlab - MATLAB : レベルごとに 4d プロットを作成する方法

示されているようにグラフを作成する必要があり、他のプロットのさまざまなレベルで表示するだけで済みます。私はこれを見つけました:

画像

contour()上記のように、異なるレベルで異なるグラフを取得するために、代わりに別のプロットを送信できますか? もしそうなら、どのように?