2023亚太赛A,B,C题保姆级代码分享

B题代码:

% 温室尺寸

length_greenhouse = 10; % m

width_greenhouse = 3; % m

height_greenhouse = 2; % m

% 风扇参数更多请看公众号:数模小猫

fan_position = [0, width_greenhouse/2, 1.3]; % [x, y, z] 位置

fan_size = [0.5, 0.5]; % 风扇尺寸

fan_velocity = 2; % m/s

fan_angle = 40; % 风扇送风方向

% 离散化温室内空间

dx = 0.1; % 空间步长

dy = 0.1;

dz = 0.1;

[x, y, z] = meshgrid(0:dx:length_greenhouse, 0:dy:width_greenhouse, 0:dz:height_greenhouse);

% 初始化风速场更多请看公众号:数模小猫

u = zeros(size(x));

v = zeros(size(y));

w = zeros(size(z));

% 计算风速场

for i = 1:size(x, 1)

for j = 1:size(x, 2)

for k = 1:size(x, 3)

% 计算点到风扇的距离和方向

r = [x(i, j, k) - fan_position(1), y(i, j, k) - fan_position(2), z(i, j, k) - fan_position(3)];

r_magnitude = norm(r);

r_unit = r / r_magnitude;

% 计算点的速度分量

theta = acosd(dot(r_unit, [1, 0, 0])); % 风扇送风方向与x轴的夹角

fan_velocity_component = fan_velocity * cosd(fan_angle - theta);

% 更新风速场更多请看公众号:数模小猫

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);

end

end

end

% 绘制风速场

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

xlabel('X (m)');

ylabel('Y (m)');

zlabel('Z (m)');

title('Wind Speed Distribution in Greenhouse');

% 找到最接近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切面图更多请看公众号:数模小猫

figure;

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('Wind Speed Distribution at z=0.5 in Greenhouse');

C题代码:

% 生成示例数据

rng(42); % 设置随机数种子以确保可重复性

n = 100; % 样本数量

X1 = randn(n, 1); % 第一个自变量

X2 = randn(n, 1); % 第二个自变量

X3 = randn(n, 1); % 第三个自变量更多请看公众号:数模小猫

X4 = randn(n, 1); % 第四个自变量

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(data, 'Y ~ X1 + X2 + X3 + X4');

% 显示回归分析的摘要

disp(mdl);

% 显示回归系数

disp('回归系数:');

disp(mdl.Coefficients.Estimate);

% 绘制散点图和回归面

figure;

hold on;

% 获取回归线的参数

beta = mdl.Coefficients.Estimate;

% 生成网格数据用于绘制回归面更多请看公众号:数模小猫

[x1, x2, x3] = meshgrid(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 = beta(1) + beta(2)*x1 + beta(3)*x2 + beta(4)*x3;

% 绘制回归面更多请看公众号:数模小猫

slice(x1, x2, x3, y_fit, [], [], min(data.X4));

xlabel('X1');

ylabel('X2');

zlabel('X3');

title('Multiple Linear Regression with Four Variables');

legend('Data Points', 'Regression Surface');

hold off;

A题代码:

import torch

from pathlib import Path

from PIL import Image

import matplotlib.pyplot as plt

更多请看公众号:数模小猫

# 导入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')

# 进行目标检测

results = model(img)

# 提取类别为苹果的结果

apple_results = [result for result in results.pred[0] if result[5] == 53]  # 假设苹果在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)

for box in apple_results:

    x, y, w, h, conf, cls = box

    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}")

更多请看公众号:数模小猫

  • 31
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值