2023 年アジアパシフィック コンペティション A、B、C ナニーレベルのコード共有

質問Bのコード:

温室サイズの%

長さ_温室 = 10; %m

幅_グリーンハウス = 3; %m

高さ_温室 = 2; %m

% ファンパラメータの詳細については、公開アカウント「Analog Kitty」を参照してください。

ファンの位置 = [0, width_greenhouse/2, 1.3]; % [x, y, z] 位置

fan_size = [0.5, 0.5]; % ファン サイズ

ファン速度 = 2; % MS

fan_angle = 40; % ファンの空気供給方向

離散化された温室スペースの割合 (%)

dx = 0.1; % 空間ステップ サイズ

それ = 0.1;

dz = 0.1;

[x, y, z] = メッシュグリッド(0:dx:長さ_グリーンハウス, 0:dy:幅_グリーンハウス, 0:dz:高さ_グリーンハウス);

% 風速フィールドを初期化します。詳細については、公開アカウントを参照してください: Digital Analog Kitty

u = ゼロ(サイズ(x));

v = ゼロ(サイズ(y));

w = ゼロ(サイズ(z));

% 風速フィールドの計算

i = 1:size(x, 1) の場合

j = 1:size(x, 2) の場合

k = 1の場合:size(x, 3)

% 点か​​らファンまでの距離と方向を計算します。

r = [x(i, j, k) - ファンの位置(1), y(i, j, k) - ファンの位置(2), z(i, j, k) - ファンの位置(3)];

r_magnitude = ノルム(r);

r_unit = r / r_magnitude;

% ポイントの速度成分を計算します

theta = acosd(dot(r_unit, [1, 0, 0])); % ファンの空気供給方向と X 軸との間の角度

fan_velocity_component = fan_velocity * cosd(fan_angle - theta);

% さらに更新された風速フィールドについては、公開アカウントを参照してください: Digital Analog Kitty

u(i, j, k) = fan_velocity_component * r_unit(1);

v(i, j, k) = fan_velocity_component * r_unit(2);

w(i, j, k) = fan_velocity_component * r_unit(3);

終わり

終わり

終わり

% 風速フィールドを描画します

quiver3(x, y, z, u, v, w);

xlabel('X(m)');

ylabel('Y(m)');

zlabel('Z(m)');

title('温室の風速分布');

% z=0.5 に最も近いインデックスを検索します。

z_index = find(abs(z - 0.5) < dz/2, 1);

% z_index が妥当な範囲内であることを確認してください

z_index = max(min(z_index, size(z, 3)), 1);

% z=0.5 の断面図を描く 詳細については、公開アカウントを参照してください: Digital Analog Kitten

形;

quiver(squeeze(x(:,:,z_index))、squeeze(y(:,:,z_index))、squeeze(u(:,:,z_index))、squeeze(v(:,:,z_index))、 'k');

xlabel('X(m)');

ylabel('Y(m)');

title('温室の z=0.5 での風速分布');

質問Cコード:

% サンプルデータの生成

rng(42); % 再現性を確保するために乱数シードを設定します。

n = 100; % サンプルサイズ

X1 = randn(n, 1); % 最初の独立変数

X2 = randn(n, 1); % 第 2 独立変数

X3 = randn(n, 1); % 3 番目の独立変数の詳細については、公開アカウント「Digital Analog Kitten」を参照してください。

X4 = randn(n, 1); % 4 番目の独立変数

Y = 2*X1 + 3*X2 + 1.5*X3 - 0.5*X4 + randn(n, 1); % 従属変数、ノイズあり

% データをテーブルに入れる

data = table(X1, X2, X3, X4, Y, 'VariableNames', {'X1', 'X2', 'X3' 、'X4'、'Y'});

% 重回帰分析

mdl = fitlm(データ, 'Y ~ X1 + X2 + X3 + X4');

% 回帰分析の概要を表示

disp(mdl);

% 回帰係数を表示

disp('回帰係数:');

disp(mdl.Coefficients.Estimate);

% 散布図と回帰曲面を描画します

形;

持続する;

% 回帰直線のパラメータを取得します

ベータ = mdl.Coefficients.Estimate;

% 回帰曲面を描画するためのグリッド データを生成します。詳細については、公開アカウントを参照してください: Digital Analog Kitten

[x1, x2, x3] = メッシュグリッド(min(data.X1):0.1:max(data.X1), min(data.X2):0.1:max(data.X2), min(data.X3):0.1 :max(data.X3));

y_fit = ベータ(1) + ベータ(2)*x1 + ベータ(3)*x2 + ベータ(4)*x3;

% 回帰曲面の描画の詳細については、公開アカウント「Digital Analog Kitten」を参照してください。

スライス(x1, x2, x3, y_fit, [], [], min(data.X4));

xlabel('X1');

ylabel('X2');

zlabel('X3');

title('4 変数による重回帰');

legend('データポイント', '回帰曲面');

控えてください。

質問Aのコード:

輸入トーチ

pathlibインポートパスから

PILインポート画像から

matplotlib.pyplotをpltとしてインポート

詳細については、公開アカウントを参照してください: Digital Analog Kitten

#YOLOv8 モデルをインポート

model_path = Path("path/to/yolov8") #YOLOv8 のパスに置き換えます

model = torch.hub.load(model_path, 'custom', path='path/to/yolov8/weights/yolov8.pt', source='local' )

# 画像を読み込む

image_path = "path/to/your/image.jpg" #画像パスに置き換えます

img = Image.open(image_path).convert('RGB')

# ターゲット検出を実行する

結果 = モデル(画像)

# カテゴリ「Apple」で結果を抽出

apple_results = [result.pred[0] の結果の結果 if result[5] == 53] # apple が YOLOv8 のカテゴリ 53 にあると仮定します

#リンゴの数を数えます

apple_count = len(apple_results)

# 画像上の結果にラベルを付ける

img_result = results.imgs[0] # 注釈結果を含む画像を取得します

fig, ax = plt.subplots(1, 1, figsize=(12, 8))

ax.imshow(img_result)

apple_results のボックスの場合:

    x、y、w、h、conf、cls = ボックス

    rect = plt.Rectangle((x, y), w, h, linewidth=2,edgecolor='r', facecolor='none')

    ax.add_patch(rect)

    ax.text(x, y, f'Apple', fontsize=12, color='r', Weight='bold')

plt.show()

#リンゴの数を出力する

print(f"リンゴの数: {apple_count}")

詳細については、公開アカウントを参照してください: Digital Analog Kitten

おすすめ

転載: blog.csdn.net/alionCUMT/article/details/134587049