CyberChaos(さいばかおす)

プログラミング言語、トランスパイラ、RPA、ChatGPT、データマイニング、リバースエンジニアリングのための忘備録

任意の曲面を三次元フーリエ変換するPythonプログラム

2023-03-13 22:17:35 | python
任意の曲面を描く関数で表示された曲面を三次元フーリエ変換するPythonプログラムを書いて

以下は、任意の曲面を描く関数で表示された曲面を三次元フーリエ変換するPythonプログラムの例です。このプログラムは、NumPy、Matplotlib、mpl_toolkits.mplot3d、およびscipy.fftpackのライブラリを使用しています。

import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from scipy.fftpack import fftn, fftshift # Define the function to create the surface def surface_func(x, y): return np.sin(np.sqrt(x**2 + y**2)) # Set up the x and y grids N = 100 x = np.linspace(-5, 5, N) y = np.linspace(-5, 5, N) X, Y = np.meshgrid(x, y) # Create the surface Z = surface_func(X, Y) # Plot the surface fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.plot_surface(X, Y, Z) plt.show() # Compute the 3D Fourier transform Z_fft = fftn(Z) Z_fft_shift = fftshift(Z_fft) # Plot the Fourier transform fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.set_xlim([-50, 50]) ax.set_ylim([-50, 50]) ax.set_zlim([-5000, 5000]) ax.plot_surface(X, Y, np.abs(Z_fft_shift)) plt.show()

このプログラムでは、surface_func関数を定義して、xおよびy座標に基づいて曲面を計算します。次に、xおよびy座標のグリッドを設定し、surface_func関数を使用して曲面を作成します。作成された曲面をplot_surface関数を使用してプロットします。

次に、fftn関数を使用して3Dフーリエ変換を計算し、fftshift関数を使用してデータを中心に移動します。この後、plot_surface関数を使用してフーリエ変換をプロットします。ここでは、x、y、z軸の範囲を適切に設定し、フーリエ変換の振幅を表すデータをnp.abs関数を使用して取得します。




帽子みたいな曲面を描く関数だな。

いや、トイレにサワデー♪www






極座標で表される任意の関数の領域を表示し、その面積を計算するPythonプログラム

2023-03-13 21:31:20 | python

極座標で表される任意の関数の領域を表示し、その面積を計算するPythonプログラムの例を書いて

以下は、極座標で表される任意の関数の領域を表示し、その面積を計算するPythonプログラムの例です。このプログラムでは、matplotlibライブラリを使用して極座標グラフを描画し、scipyライブラリを使用して極座標での積分を行います。

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import quad

# 関数の定義(ここでは r = 2 + cos(3θ))
def func(theta):
    r = 2 + np.cos(3 * theta)
    return r

# 極座標グラフを描画
theta = np.linspace(0, 2*np.pi, 1000) # θの範囲を0から2πまで1000分割
r = func(theta)
ax = plt.subplot(111, projection='polar')
ax.plot(theta, r)

# 面積を計算
def integrand(theta):
    r = func(theta)
    return 0.5 * r**2

area, _ = quad(integrand, 0, 2*np.pi) # 積分により面積を計算
print("極座標上の領域の面積:", area)

plt.show()

このプログラムでは、funcという関数を定義しています。この関数は、極座標上のθの値に対応するrの値を計算します。ここではr = 2 + cos(3θ)を例として使用していますが、他の関数でも同様に対応するrの値を計算することができます。

次に、極座標グラフを描画するためにmatplotlibライブラリを使用してい・・・

バックレましたwww


GBP/JPY5分足チャートをフーリエ変換するPythonプログラム

2023-03-13 20:52:28 | python

FXのGBP/JPYの5分足のチャートをフーリエ変換してチャートと一緒に表示するプログラムをPythonで書いて。

PythonでGBP/JPYの5分足のチャートを取得し、フーリエ変換を行い、元のチャートとフーリエ変換後のグラフを表示するプログラムを以下に示します。

まず、必要なライブラリをインストールします。

pip install mpl_finance yfinance numpy matplotlib

次に、以下のプログラムを実行します。

import yfinance as yf
import numpy as np
import matplotlib.pyplot as plt
from mpl_finance import candlestick_ohlc
from scipy.fftpack import fft, ifft

# GBP/JPYの5分足のチャートを取得する
symbol = " GBPJPY=X"
data = yf.download(symbol, interval="5m", period="1d")

# チャートを表示する
fig, ax = plt.subplots()
candlestick_ohlc(ax, data[['Open', 'High', 'Low', 'Close']].values, width=0.0005, colorup='g', colordown='r')
plt.show()

# 終値データを取得する
prices = data['Close'].values

# フーリエ変換を実行する
fft_values = fft(prices)

# フーリエ変換後のグラフを作成する
fig, ax = plt.subplots()
ax.plot(np.abs(fft_values))
plt.show()

このプログラムでは、yfinanceライブラリを使用して、GBP/JPYの5分足のチャートを取得し、matplotlibライブラリを使用してチャートを表示します。次に、フーリエ変換を実行し、np.abs関数を使用して結果の振幅スペクトルをプロットします。

また、candlestick_ohlc関数を使用して、ローソク足チャートを作成するためにmpl_financeライブラリをインポートしています。ただし、このライブラリは非推奨となっているため、代わりにmplfinanceライブラリを使用することが推奨されます。


FXの任意のチャートをフーリエ変換するMQL4プログラム

2023-03-13 20:30:47 | FX

FXの任意のチャートをフーリエ変換するプログラムをMQL4で書いて。

MQL4でFXチャートをフーリエ変換するプログラムを作成するには、まずチャートから価格データを収集し、それを数値データに変換する必要があります。その後、収集した価格データをフーリエ変換するためのアルゴリズムを実装する必要があります。

以下は、MQL4でFXチャートのフーリエ変換を行うプログラムの一例です。

// チャートから価格データを収集する
double prices[];
int limit;
int counted_bars = IndicatorCounted();
if(counted_bars < 0) return(-1);
if(counted_bars > 0) counted_bars--;
limit = Bars - counted_bars;
ArraySetAsSeries(prices, true);
for(int i = 0; i < limit; i++) {
    prices[i] = Close[i];
}

// フーリエ変換を行う
Complex fft[];
ArraySetAsSeries(fft, true);
ArrayResize(fft, limit);
for(int i = 0; i < limit; i++) {
    fft[i].re = prices[i];
    fft[i].im = 0;
}
FourierTransform(fft, FFT_FORWARD);

// 結果を表示する
for(int i = 0; i < limit; i++) {
    double freq = i / (Period() * limit);
    double amplitude = MathSqrt(fft[i].re*fft[i].re + fft[i].im*fft[i].im);
    Print("Frequency: ", freq, ", Amplitude: ", amplitude);
}

このプログラムでは、Close価格を収集し、FourierTransform関数を使用してフーリエ変換を実行します。結果は、周波数と振幅のペアのリストとして表示されます。

ただし、このプログラムはFXチャートのヒストリカルデータを使用してフーリエ変換を行うだけで、リアルタイムでの解析には適していません。また、フーリエ変換を使用する場合、周期的な信号に対してのみ有効であるため、FXチャートの場合には限界があります。


レンジブレイクアウト逆指値トラップリピートEA

2023-03-13 20:27:24 | FX

ボックスブレイクアウトを狙うためのMT4インジケーター集

ボックスブレイクアウトを狙うためのMT4インジケーター集

今回はボックスブレイクアウトを狙う際に便利なインジケーターをご紹介します。 ボックスブレイクアウトは別名「タイムレンジブレイク」とも呼ばれ、特定の時間帯の値幅をブ...

元FXコーチによるFX情報商材検証ブログ

レンジをボックスで囲み、ボックスを突破した所をトレンド発生と判断し、逆指値トラップをはる手法。

ダマシがあるので、突破したらすぐ逆指値を入れるのではなく、任意の間隔を開けてから逆指値を入れるようにするといいらしい。

自動でボックスを作り、突破して指定のpipes離れたら逆指値を自動で入れるEAを開発すべきだ。


にあるようなフーリエ変換インジケータを併用すると、さらに効果的と思われる。

レンジ判定にはpythonによるディープラーニングプログラムの適用が望ましい。

CATIAはGhidraで逆コンパイル可能か?

2023-03-13 17:54:35 | CATIA
ではCATIAはGhidraで逆コンパイルできますか?

CATIAは商用の3D CADソフトウェアであり、Ghidraは一般的にバイナリファイルの逆コンパイルに使用されるオープンソースのツールです。CATIAの場合、Ghidraで逆コンパイルすることはできません。

CATIAはソフトウェアの開発者によって開発された商用のアプリケーションであり、バイナリ形式はプロプライエタリな形式であり、一般的に解析することはできません。CATIAのバイナリファイルを解析するには、CATIAの開発者によって提供されるSDKやAPIを使用する必要があります。

ただし、CATIAが生成するファイル形式には、いくつかのオープンフォーマットがあります。たとえば、CATIAはSTEPファイルやIGESファイルなどの標準的な3Dファイル形式をサポートしています。これらのファイル形式は、Ghidraなどのバイナリ解析ツールを使用して解析することができます。ただし、これらのファイル形式は元のCATIAファイルよりも情報が少ないため、解析される情報量は制限されます。

ex.4ファイルをGhidraで逆コンパイルできますか?

2023-03-13 17:49:54 | FX
ChatGPTで超ヤバい質問をしてみた。

MT4のex.4ファイルをGhidraで逆コンパイルすることはできますか?

Ghidraは多くのバイナリ形式に対応していますが、MT4のex.4ファイルがどのような形式であるかによっては、Ghidraで逆コンパイルできるかどうかが異なります。

一般的に、Ghidraはプログラムのバイナリを解析し、アセンブリ言語に変換することができますが、そのバイナリ形式がサポートされている必要があります。MT4のex.4ファイルがGhidraで逆コンパイルできるかどうかは、ファイルがどのような形式であるかによって異なります。

MT4のex.4ファイルが、Ghidraがサポートしているバイナリ形式の1つであるx86アーキテクチャでコンパイルされている場合、Ghidraはそれを逆コンパイルすることができます。ただし、MT4のex.4ファイルが別のアーキテクチャでコンパイルされている場合、Ghidraは逆コンパイルできません。

したがって、MT4のex.4ファイルをGhidraで逆コンパイルできるかどうかを確認するには、ファイルのバイナリ形式が何であるかを特定する必要があります。ファイルのバイナリ形式がx86アーキテクチャである場合は、Ghidraを使用して逆コンパイルすることができます。そうでない場合は、他のツールを使用する必要があるかもしれません。

Unreal Engine5を使って3D画像を自動描画するPythonプログラム

2023-03-13 04:06:59 | Unreal engine 5
Unreal Engine5で柴犬の3D画像を自動で描画するPythonプログラムを書いてください

Unreal Engine 5は、Pythonを使用してエディター機能を拡張することができます。以下のように、PythonでUnreal Engine 5を使用して、柴犬の3Dモデルを自動的に描画するプログラムを書くことができます。

import unreal_engine as ue # レベルに柴犬の3Dモデルを配置する関数 def spawn_dog(dog_mesh, location): # レベルにアクセスする level = ue.get_editor_world().get_level() # 柴犬の3Dモデルを作成する dog_actor = level.actor_spawn(dog_mesh, location) # 柴犬の3Dモデルのスケールを変更する dog_actor.set_actor_scale3d(ue.Vector(2.0, 2.0, 2.0)) # 柴犬の3Dモデルを回転させる dog_actor.set_actor_rotation(ue.Rotator(0.0, 90.0, 0.0)) # メイン関数 def main(): # 柴犬の3Dモデルを読み込む dog_mesh = ue.load_object(ue.StaticMesh, "/Game/DogMesh") # 柴犬の3Dモデルをレベルに配置する spawn_dog(dog_mesh, ue.Vector(0.0, 0.0, 0.0)) # スクリプトを開始する main()

このプログラムは、UE5のPythonライブラリを使用して、柴犬の3Dモデルをレベルに配置します。柴犬の3Dモデルを読み込むために、ue.load_object()関数を使用し、柴犬の3Dモデルをレベルに配置するために、spawn_dog()関数を定義します。spawn_dog()関数では、level.actor_spawn()関数を使用して、柴犬の3Dモデルを生成し、スケールを変更して回転させます。最後に、main()関数でspawn_dog()関数を呼び出して、スクリプトを実行します。


任意の曲面を三次元フーリエ変換するPythonプログラムを書いて

2023-03-13 03:45:54 | python
任意の曲面を三次元フーリエ変換するPythonプログラムを書いて

3次元フーリエ変換を実行するPythonプログラムは以下のようになります。ここではnumpyとscipyのライブラリを使用します。

import numpy as np from scipy.fftpack import fftn, ifftn import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # 3次元フーリエ変換 def fft3d(surface): return fftn(surface) # 3次元逆フーリエ変換 def ifft3d(fourier_surface): return ifftn(fourier_surface).real # メイン関数 def main(): # 3次元曲面を生成する x = np.linspace(-10, 10, 64) y = np.linspace(-10, 10, 64) z = np.linspace(-10, 10, 64) xv, yv, zv = np.meshgrid(x, y, z) surface = np.sin(np.sqrt(xv ** 2 + yv ** 2 + zv ** 2)) / np.sqrt(xv ** 2 + yv ** 2 + zv ** 2) # フーリエ変換する fourier_surface = fft3d(surface) # フーリエ逆変換して元の曲面を復元する restored_surface = ifft3d(fourier_surface) # 結果をプロットする fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.set_title("Restored Surface") ax.set_xlabel("X") ax.set_ylabel("Y") ax.set_zlabel("Z") ax.plot_surface(xv, yv, restored_surface, cmap="gray") plt.show() if __name__ == "__main__": main()

このプログラムは、-10から10までの範囲のx、y、zの値を持つ64x64x64のメッシュグリッドを作成し、それに対してsin(sqrt(x^2 + y^2 + z^2))/sqrt(x^2 + y^2 + z^2)を適用して、3次元曲面を生成します。その後、生成された3次元曲面に対して3次元フーリエ変換を実行し、フーリエ逆変換によって復元された曲面を計算します。最後に、復元された曲面を3Dプロットして表示します。


任意の曲面をフーリエ変換するPythonプログラム

2023-03-13 03:31:27 | Civil3D
ドローンを使って地表を撮影し、Civil3Dで作図するシーンをイメージして以下の質問を思い付いた。

任意の曲面をフーリエ変換するPythonプログラムを書いて


以下は、任意の曲面をフーリエ変換するPythonプログラムの例です。numpyとmatplotlibのライブラリを使用しています。このプログラムでは、フーリエ変換を2回実行して、元の曲面と復元された曲面を比較します。

import numpy as np import matplotlib.pyplot as plt # 2次元フーリエ変換 def fft2d(surface): return np.fft.fft2(surface) # 逆2次元フーリエ変換 def ifft2d(fourier_surface): return np.fft.ifft2(fourier_surface) # メイン関数 def main(): # 曲面を生成する x = np.linspace(-10, 10, 256) y = np.linspace(-10, 10, 256) xv, yv = np.meshgrid(x, y) surface = np.sin(np.sqrt(xv ** 2 + yv ** 2)) / np.sqrt(xv ** 2 + yv ** 2) # フーリエ変換する fourier_surface = fft2d(surface) # フーリエ逆変換して元の曲面を復元する restored_surface = ifft2d(fourier_surface).real # 結果をプロットする fig, axs = plt.subplots(1, 2, figsize=(8, 4)) axs[0].imshow(surface, cmap="gray") axs[0].set_title("Original Surface") axs[1].imshow(restored_surface, cmap="gray") axs[1].set_title("Restored Surface") plt.show() if __name__ == "__main__": main()

このプログラムは、-10から10までの範囲のxとyの値を持つ256x256のメッシュグリッドを作成し、それに対してsin(sqrt(x^2 + y^2))/sqrt(x^2 + y^2)を適用して、曲面を生成します。その後、生成された曲面に対して2次元フーリエ変換を実行し、フーリエ逆変換によって復元された曲面を計算します。最後に、元の曲面と復元された曲面を2つのサイドバイサイドのサブプロットでプロットします。

以下はPydroidでの実行結果






ドローンで地表を撮影した際に得られた高低差のデータを利用して加工すれば、Civil3Dに自動で作図させることも可能になると思われる。