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}")
更多请看公众号:数模小猫