数学建模——熵权+TOPSIS+肘部法则+系统聚类
文章目录
- 一、起因
- 二、代码展示
一、起因
我本科的数学建模队长找上我,让我帮她写下matlab代码,当然用的模型还是曾经打比赛的模型,所以虽然代码量多,但是写的很快,也是正逢中秋,有点时间。
当然我也没想到,研一刚开学这论文就这么水灵灵的要发出来了,队长的实力还是遥遥领先啊,在这里,祝她们的论文一次见刊!
二、代码展示
差不多有460行代码这样
%% 获取数据
[num,txt,raw] = xlsread('C:\Users\19468\Desktop\zhibiao1.xlsx',1);%% 标准化MIN = min(num); %各指标的最大值
MAX = max(num); %各指标的最小值
NUM_B = []; %保存标准化后的数据
for i = 1:size(num,1) % 运行31个省份for j = 1:size(num,2) % 1个省份的23个数据NUM_B(i,j) = (num(i,j)-MIN(j))/(MAX(j) - MIN(j));end
end%% 对个别指标正向化
% 对指标在第5,10,11,13,14、22列进行正向化
Z = [5,10,11,13,14,22]; % 保存正向化列数
NUM_B_Z = NUM_B; % 存放标准化正向化后的数据
for i = 1:size(num,1) % 运行31个省份for j=1:size(Z,2) % 5列数据NUM_B_Z(i,Z(j)) = 1 - NUM_B(i,Z(j));end
end%% 对二级指标进行熵权+TOPSIS,保留各省份各一级指标的数据
TOP_one = [1,2,3,4,5]; % 第一个一级指标
TOP_two = [6,7,8]; % 第二个一级指标
TOP_three = [9,10,11,12,13]; % 第三个一级指标
TOP_four = [14,15]; % 第四个一级指标
TOP_five = [16,17,18,19]; % 第五个一级指标
TOP_six = [20,21,22,23]; % 第六个一级指标TOP_one_data = NUM_B_Z(:,1:5); % 第一个一级指标的数据
TOP_two_data = NUM_B_Z(:,6:8); % 第二个一级指标的数据
TOP_three_data = NUM_B_Z(:,9:13); % 第三个一级指标的数据
TOP_four_data = NUM_B_Z(:,14:15); % 第四个一级指标的数据
TOP_five_data = NUM_B_Z(:,16:19); % 第五个一级指标的数据
TOP_six_data = NUM_B_Z(:,20:23); % 第六个一级指标的数据% NUM_B_Z_W(:,:,1) = TOP_one_data;
% NUM_B_Z_W(:,:,2) = TOP_two_data;
% NUM_B_Z_W(:,:,3) = TOP_three_data;
% NUM_B_Z_W(:,:,4) = TOP_four_data;
% NUM_B_Z_W(:,:,5) = TOP_five_data;% 熵权法+TOPSIS
% 指标一
Z = TOP_one_data;
[n,m] = size(Z);
D = zeros(1,m); % 初始化保存信息效用值的行向量
for i = 1:mx = Z(:,i); % 取出第i列的指标p = x / sum(x);% 注意,p有可能为0,此时计算ln(p)*p时,Matlab会返回NaN,所以要判断n = length(p); % 向量的长度lnp = zeros(n,1); % 初始化最后的结果for j = 1:n % 开始循环if p(j) == 0 % 如果第i个元素为0lnp(j) = 0; % 那么返回的第i个结果也为0elselnp(j) = log(p(j));endend%到这里结束e = -sum(p .* lnp) / log(n); % 计算信息熵D(i) = 1- e; % 计算信息效用值
end
W = D ./ sum(D); % 将信息效用值归一化,得到权重
WD_min = min(TOP_one_data);
D_max = max(TOP_one_data);zonghedefen_one = 1:31; %生成记录点
for i = 1:31%利用(C = D-/((D-)+(D+)))topsis模型与熵权进行结合D_jia = sqrt(W(1)*(TOP_one_data(i,1)-D_max(1))^2 + W(2)*(TOP_one_data(i,2)-D_max(2))^2 + ...W(3)*(TOP_one_data(i,3)-D_max(3))^2 + W(4)*(TOP_one_data(i,4)-D_max(4))^2 + ...W(5)*(TOP_one_data(i,5)-D_max(5))^2);D_jian = sqrt(W(1)*(TOP_one_data(i,1)-D_min(1))^2 + W(2)*(TOP_one_data(i,2)-D_min(2))^2 + ...W(3)*(TOP_one_data(i,3)-D_min(1))^2 + W(4)*(TOP_one_data(i,4)-D_min(2))^2 + ...W(5)*(TOP_one_data(i,5)-D_min(1))^2);zonghedefen_one(i) = D_jian/(D_jia+D_jian); % 一次就是产生31个数据
endzonghedefen_one = zonghedefen_one'; % 指标二
Z = TOP_two_data;
[n,m] = size(Z);
D = zeros(1,m); % 初始化保存信息效用值的行向量
for i = 1:mx = Z(:,i); % 取出第i列的指标p = x / sum(x);% 注意,p有可能为0,此时计算ln(p)*p时,Matlab会返回NaN,所以要判断n = length(p); % 向量的长度lnp = zeros(n,1); % 初始化最后的结果for j = 1:n % 开始循环if p(j) == 0 % 如果第i个元素为0lnp(j) = 0; % 那么返回的第i个结果也为0elselnp(j) = log(p(j));endend%到这里结束e = -sum(p .* lnp) / log(n); % 计算信息熵D(i) = 1- e; % 计算信息效用值
end
W = D ./ sum(D); % 将信息效用值归一化,得到权重
WD_min = min(TOP_two_data);
D_max = max(TOP_two_data);zonghedefen_two = 1:31; %生成记录点
for i = 1:31%利用(C = D-/((D-)+(D+)))topsis模型与熵权进行结合D_jia = sqrt(W(1)*(TOP_two_data(i,1)-D_max(1))^2 + W(2)*(TOP_two_data(i,2)-D_max(2))^2 + ...W(3)*(TOP_two_data(i,3)-D_max(3))^2);D_jian = sqrt(W(1)*(TOP_two_data(i,1)-D_min(1))^2 + W(2)*(TOP_two_data(i,2)-D_min(2))^2 + ...W(3)*(TOP_two_data(i,3)-D_min(1))^2);zonghedefen_two(i) = D_jian/(D_jia+D_jian); % 一次就是产生31个数据
endzonghedefen_two = zonghedefen_two'; % 指标三
Z = TOP_three_data;
[n,m] = size(Z);
D = zeros(1,m); % 初始化保存信息效用值的行向量
for i = 1:mx = Z(:,i); % 取出第i列的指标p = x / sum(x);% 注意,p有可能为0,此时计算ln(p)*p时,Matlab会返回NaN,所以要判断n = length(p); % 向量的长度lnp = zeros(n,1); % 初始化最后的结果for j = 1:n % 开始循环if p(j) == 0 % 如果第i个元素为0lnp(j) = 0; % 那么返回的第i个结果也为0elselnp(j) = log(p(j));endend%到这里结束e = -sum(p .* lnp) / log(n); % 计算信息熵D(i) = 1- e; % 计算信息效用值
end
W = D ./ sum(D); % 将信息效用值归一化,得到权重
WD_min = min(TOP_three_data);
D_max = max(TOP_three_data);zonghedefen_three = 1:31; %生成记录点
for i = 1:31%利用(C = D-/((D-)+(D+)))topsis模型与熵权进行结合D_jia = sqrt(W(1)*(TOP_three_data(i,1)-D_max(1))^2 + W(2)*(TOP_three_data(i,2)-D_max(2))^2 + ...W(3)*(TOP_three_data(i,3)-D_max(3))^2 + W(4)*(TOP_three_data(i,4)-D_max(4))^2 + ...W(5)*(TOP_three_data(i,5)-D_max(5))^2);D_jian = sqrt(W(1)*(TOP_three_data(i,1)-D_min(1))^2 + W(2)*(TOP_three_data(i,2)-D_min(2))^2 + ...W(3)*(TOP_three_data(i,3)-D_min(3))^2 + W(4)*(TOP_three_data(i,4)-D_min(4))^2 + ...W(5)*(TOP_three_data(i,5)-D_min(5))^2);zonghedefen_three(i) = D_jian/(D_jia+D_jian); % 一次就是产生31个数据
endzonghedefen_three = zonghedefen_three';% 指标四
Z = TOP_four_data;
[n,m] = size(Z);
D = zeros(1,m); % 初始化保存信息效用值的行向量
for i = 1:mx = Z(:,i); % 取出第i列的指标p = x / sum(x);% 注意,p有可能为0,此时计算ln(p)*p时,Matlab会返回NaN,所以要判断n = length(p); % 向量的长度lnp = zeros(n,1); % 初始化最后的结果for j = 1:n % 开始循环if p(j) == 0 % 如果第i个元素为0lnp(j) = 0; % 那么返回的第i个结果也为0elselnp(j) = log(p(j));endend%到这里结束e = -sum(p .* lnp) / log(n); % 计算信息熵D(i) = 1- e; % 计算信息效用值
end
W = D ./ sum(D); % 将信息效用值归一化,得到权重
WD_min = min(TOP_four_data);
D_max = max(TOP_four_data);zonghedefen_four = 1:31; %生成记录点
for i = 1:31%利用(C = D-/((D-)+(D+)))topsis模型与熵权进行结合D_jia = sqrt(W(1)*(TOP_four_data(i,1)-D_max(1))^2 + W(2)*(TOP_four_data(i,2)-D_max(2))^2);D_jian = sqrt(W(1)*(TOP_four_data(i,1)-D_min(1))^2 + W(2)*(TOP_four_data(i,2)-D_min(2))^2);zonghedefen_four(i) = D_jian/(D_jia+D_jian); % 一次就是产生31个数据
endzonghedefen_four = zonghedefen_four'; % 指标五
Z = TOP_five_data;
[n,m] = size(Z);
D = zeros(1,m); % 初始化保存信息效用值的行向量
for i = 1:mx = Z(:,i); % 取出第i列的指标p = x / sum(x);% 注意,p有可能为0,此时计算ln(p)*p时,Matlab会返回NaN,所以要判断n = length(p); % 向量的长度lnp = zeros(n,1); % 初始化最后的结果for j = 1:n % 开始循环if p(j) == 0 % 如果第i个元素为0lnp(j) = 0; % 那么返回的第i个结果也为0elselnp(j) = log(p(j));endend%到这里结束e = -sum(p .* lnp) / log(n); % 计算信息熵D(i) = 1- e; % 计算信息效用值
end
W = D ./ sum(D); % 将信息效用值归一化,得到权重
WD_min = min(TOP_five_data);
D_max = max(TOP_five_data);zonghedefen_five = 1:31; %生成记录点
for i = 1:31%利用(C = D-/((D-)+(D+)))topsis模型与熵权进行结合D_jia = sqrt(W(1)*(TOP_five_data(i,1)-D_max(1))^2 + W(2)*(TOP_five_data(i,2)-D_max(2))^2 + ...W(3)*(TOP_five_data(i,3)-D_max(3))^2 + W(4)*(TOP_five_data(i,4)-D_max(4))^2);D_jian = sqrt(W(1)*(TOP_five_data(i,1)-D_min(1))^2 + W(2)*(TOP_five_data(i,2)-D_min(2))^2 + ...W(3)*(TOP_five_data(i,3)-D_min(3))^2 + W(4)*(TOP_five_data(i,4)-D_min(4))^2);zonghedefen_five(i) = D_jian/(D_jia+D_jian); % 一次就是产生31个数据
endzonghedefen_five = zonghedefen_five'; % 指标六
Z = TOP_six_data;
[n,m] = size(Z);
D = zeros(1,m); % 初始化保存信息效用值的行向量
for i = 1:mx = Z(:,i); % 取出第i列的指标p = x / sum(x);% 注意,p有可能为0,此时计算ln(p)*p时,Matlab会返回NaN,所以要判断n = length(p); % 向量的长度lnp = zeros(n,1); % 初始化最后的结果for j = 1:n % 开始循环if p(j) == 0 % 如果第i个元素为0lnp(j) = 0; % 那么返回的第i个结果也为0elselnp(j) = log(p(j));endend%到这里结束e = -sum(p .* lnp) / log(n); % 计算信息熵D(i) = 1- e; % 计算信息效用值
end
W = D ./ sum(D); % 将信息效用值归一化,得到权重
WD_min = min(TOP_six_data);
D_max = max(TOP_six_data);zonghedefen_six = 1:31; %生成记录点
for i = 1:31%利用(C = D-/((D-)+(D+)))topsis模型与熵权进行结合D_jia = sqrt(W(1)*(TOP_six_data(i,1)-D_max(1))^2 + W(2)*(TOP_six_data(i,2)-D_max(2))^2 + ...W(3)*(TOP_six_data(i,3)-D_max(3))^2 + W(4)*(TOP_six_data(i,4)-D_max(4))^2);D_jian = sqrt(W(1)*(TOP_six_data(i,1)-D_min(1))^2 + W(2)*(TOP_six_data(i,2)-D_min(2))^2 + ...W(3)*(TOP_six_data(i,3)-D_min(3))^2 + W(4)*(TOP_six_data(i,4)-D_min(4))^2);zonghedefen_six(i) = D_jian/(D_jia+D_jian); % 一次就是产生31个数据
endzonghedefen_six = zonghedefen_six';%% 数据整合
zonghedefen = [zonghedefen_one,zonghedefen_two,zonghedefen_three,zonghedefen_four,zonghedefen_five,zonghedefen_six];
% xlswrite('C:\Users\19468\Desktop\writing_two.xlsx',zonghedefen);%% 对一级指标熵权+TOPSIS,保留各一级指标的熵值,信息效用值以及权重,以及最终得分
Z = zonghedefen;
[n,m] = size(Z);
D = zeros(1,m); % 初始化保存信息效用值的行向量
for i = 1:mx = Z(:,i); % 取出第i列的指标p = x / sum(x);% 注意,p有可能为0,此时计算ln(p)*p时,Matlab会返回NaN,所以要判断n = length(p); % 向量的长度lnp = zeros(n,1); % 初始化最后的结果for j = 1:n % 开始循环if p(j) == 0 % 如果第i个元素为0lnp(j) = 0; % 那么返回的第i个结果也为0elselnp(j) = log(p(j));endend%到这里结束e(i) = -sum(p .* lnp) / log(n); % 计算信息熵D(i) = 1- e(i); % 计算信息效用值
end
W = D ./ sum(D); % 将信息效用值归一化,得到权重
WD_min = min(zonghedefen);
D_max = max(zonghedefen);zonghedefen_last = 1:31; %生成记录点
for i = 1:31%利用(C = D-/((D-)+(D+)))topsis模型与熵权进行结合D_jia = sqrt(W(1)*(zonghedefen(i,1)-D_max(1))^2 + W(2)*(zonghedefen(i,2)-D_max(2))^2 + ...W(3)*(zonghedefen(i,3)-D_max(3))^2 + W(4)*(zonghedefen(i,4)-D_max(4))^2 + ...W(5)*(zonghedefen(i,5)-D_max(5))^2 + W(6)*(zonghedefen(i,6)-D_max(6))^2);D_jian = sqrt(W(1)*(zonghedefen(i,1)-D_min(1))^2 + W(2)*(zonghedefen(i,2)-D_min(2))^2 + ...W(3)*(zonghedefen(i,3)-D_min(3))^2 + W(4)*(zonghedefen(i,4)-D_min(4))^2 + ...W(5)*(zonghedefen(i,5)-D_min(5))^2 + W(6)*(zonghedefen(i,6)-D_min(6))^2);zonghedefen_last(i) = D_jian/(D_jia+D_jian); % 一次就是产生31个数据
endzonghedefen_last = zonghedefen_last';
e = e';
D = D';
W = W';%% 肘部法制聚类(一级)
[n, p] = size(zonghedefen_last);
K = 8;
D = zeros(K, 2);
for k = 2:K[label, c, sumd, d] = kmeans(zonghedefen_last, k, 'dist', 'sqeuclidean');% data,n×p原始数据向量% label,n×1向量,聚类结果标签;% c,k×p向量,k个聚类质心的位置% sumd,k×1向量,类间所有点与该类质心点距离之和% d,n×k向量,每个点与聚类质心的距离sse1 = sum(sumd.^2);D(k, 1) = k;D(k, 2) = sse1;
end
% 绘制聚类偏差图
plot(D(2:end, 1), D(2:end, 2), 'o-');
title('不同K值聚类偏差图')
xlabel('分类数(K值)')
ylabel('簇内误差平方和')%% 肘部法制聚类(二级)
[n, p] = size(zonghedefen);
K = 8;
D = zeros(K, 2);
for k = 2:K[label, c, sumd, d] = kmeans(zonghedefen, k, 'dist', 'sqeuclidean');% data,n×p原始数据向量% label,n×1向量,聚类结果标签;% c,k×p向量,k个聚类质心的位置% sumd,k×1向量,类间所有点与该类质心点距离之和% d,n×k向量,每个点与聚类质心的距离sse1 = sum(sumd.^2);D(k, 1) = k;D(k, 2) = sse1;
end
% 绘制聚类偏差图
plot(D(2:end, 1), D(2:end, 2), 'o-');
title('不同K值聚类偏差图')
xlabel('分类数(K值)')
ylabel('簇内误差平方和')%% 系统聚类(一级)
% 执行系统聚类
Z = linkage(zonghedefen_last, 'ward');% 绘制树状图
figure;
dendrogram(Z);
title('Hierarchical Clustering Dendrogram');% 如果你想要裁剪树状图以显示特定数量的聚类,可以使用以下代码
% 例如,我们想要将数据聚类为4个类别
k = 4;
figure;
dendrogram(Z, k);
title(['Hierarchical Clustering Dendrogram with ', num2str(k), ' clusters']);% 裁剪树状图并获取聚类索引
idx = cluster(Z, 'maxclust', k);% 绘制裁剪后的聚类结果
figure;
gscatter(zonghedefen_last(:,1), idx);
title(['Hierarchical Clustering with ', num2str(k), ' clusters']);
xlabel('Feature 1');
ylabel('Feature 2');
legend('Location', 'best');%% 系统聚类(二级)% % 执行系统聚类
% Z = linkage(zonghedefen, 'ward');
%
% % 绘制树状图
% figure;
% dendrogram(Z);
% title('Hierarchical Clustering Dendrogram');
%
% % 如果你想要裁剪树状图以显示特定数量的聚类,可以使用以下代码
% % 例如,我们想要将数据聚类为4个类别
% k = 4;
% figure;
% dendrogram(Z, k);
% title(['Hierarchical Clustering Dendrogram with ', num2str(k), ' clusters']);
%
% % 裁剪树状图并获取聚类索引
% idx = cluster(Z, 'maxclust', k);
%
% % 绘制裁剪后的聚类结果
% figure;
% gscatter(zonghedefen(:,1),zonghedefen(:,2),zonghedefen(:,3),zonghedefen(:,4),zonghedefen(:,5),zonghedefen(:,6), idx);
% title(['Hierarchical Clustering with ', num2str(k), ' clusters']);
% xlabel('Feature 1');
% ylabel('Feature 2');
% legend('Location', 'best');
相关文章:
数学建模——熵权+TOPSIS+肘部法则+系统聚类
文章目录 一、起因二、代码展示 一、起因 我本科的数学建模队长找上我,让我帮她写下matlab代码,当然用的模型还是曾经打比赛的模型,所以虽然代码量多,但是写的很快,也是正逢中秋,有点时间。 当然我也没想到…...

Java | Leetcode Java题解之第403题青蛙过河
题目: 题解: class Solution {public boolean canCross(int[] stones) {int n stones.length;boolean[][] dp new boolean[n][n];dp[0][0] true;for (int i 1; i < n; i) {if (stones[i] - stones[i - 1] > i) {return false;}}for (int i 1…...
828华为云征文|华为Flexus云服务器搭建OnlyOffice私有化在线办公套件
一、引言 在当今数字化办公的时代,在线办公套件的需求日益增长。华为Flexus云服务器凭借其强大的性能和稳定性,为搭建OnlyOffice私有化在线办公套件提供了理想的平台。在2024年9月14日这个充满探索精神的日子里,我们开启利用华为Flexus云服务…...

[Java]maven从入门到进阶
介绍 apache旗下的开源项目,用于管理和构建java项目的工具 官网: Welcome to The Apache Software Foundation! 1.依赖管理 通过简单的配置, 就可以方便的管理项目依赖的资源(jar包), 避免版本冲突问题 优势: 基于项目对象模型(POM),通过一小段描述信息来管理项目的构建 2…...

Leetcode面试经典150题-130.被围绕的区域
给你一个 m x n 的矩阵 board ,由若干字符 X 和 O 组成,捕获 所有 被围绕的区域: 连接:一个单元格与水平或垂直方向上相邻的单元格连接。区域:连接所有 O 的单元格来形成一个区域。围绕:如果您可以用 X 单…...

Ruffle 继续在开源软件中支持 Adobe Flash Player
大多数人已经无需考虑对早已寿终正寝的 Adobe Flash 的支持,但对于那些仍有一些 Adobe Flash/SWF 格式的旧资产,或想重温一些基于 Flash 的旧游戏/娱乐项目的人来说,开源 Ruffle 项目仍是 2024 年及以后处理 Flash 的主要竞争者之一。 Ruffl…...

【postgres】笔记
数据库相关笔记 1.分区表创建时间戳设置问题2.查询语句2.1查询数据库某表有多少行2.2 表中某列值类型是 1.分区表创建时间戳设置问题 今天早上发现postgres数据库表中总会隔4天丢失一天的数据,后来查了一下,发现是分区表创建的有问题。 如图所示 可以看…...
#if等命令的学习
预处理命令 #include(文件包含命令) #define(宏定义命令) #undef #if(条件编译) #ifdef #ifndef #elif #endif defined函数(与if等结合使用) 下面将解释上述各自的用法、使用…...

【有啥问啥】深入浅出马尔可夫链蒙特卡罗(Markov Chain Monte Carlo, MCMC)算法
深入浅出马尔可夫链蒙特卡罗(Markov Chain Monte Carlo, MCMC)算法 0. 引言 Markov Chain Monte Carlo(MCMC)是一类用于从复杂分布中采样的强大算法,特别是在难以直接计算分布的情况下。它广泛应用于统计学、机器学习…...

java企业办公自动化OA
技术架构: sshjbpm 功能描述: 用户管理,岗位管理,部门管理,权限管理,网上交流,贴吧,审批流转。权限管理是树状结构人性化操作,也可以用作论坛。 效果图:...

【leetcode】树形结构习题
二叉树的前序遍历 返回结果:[‘1’, ‘2’, ‘4’, ‘5’, ‘3’, ‘6’, ‘7’] 144.二叉树的前序遍历 - 迭代算法 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 1: 输入:root [1,null,2,3] 输出:[1,…...

在ros2中安装gazebo遇到报错
安装命令: sudo apt-get install ros-${ROS_DISTRO}-ros-gz 报错如下: E: Unable to locate package ros-galactic-ros-gz 解决方法: 用如下安装命令: sudo apt install ros-galactic-ros-ign 问题解决!...

VMware vSphere 8.0 Update 3b 发布下载,新增功能概览
VMware vSphere 8.0 Update 3b 发布下载,新增功能概览 vSphere 8.0U3 | ESXi 8.0U3 & vCenter Server 8.0U3 请访问原文链接:https://sysin.org/blog/vmware-vsphere-8-u3/,查看最新版。原创作品,转载请保留出处。 作者主页…...

在设计开发中,如何提高网站的用户体验?
在网站设计开发中,提高用户体验是至关重要的。良好的用户体验不仅能提升用户的满意度和忠诚度,还能增加转化率和用户留存率。以下是一些有效的方法和策略: 优化页面加载速度 减少HTTP请求:合并CSS和JavaScript文件以减少HTTP请求…...

油耳拿什么清理比较好?好用的无线可视挖耳勺推荐
油耳的朋友通常都是用棉签来掏耳。这种方式是很不安全的。因为使用棉签戳破耳道和棉絮掉落在耳道中而引起感染的新闻不在少数。在使用过程中更加建议大家可视挖耳勺来清理会更好。不仅清晰度得干净而且安全会更高。但最近这几年我发现可视挖耳勺市面上不合格产品很多࿰…...
永久配置清华源,告别下载龟速
为了每次使用 pip 时自动使用清华源,可以通过以下步骤进行配置: 方法一:通过命令行配置 你可以在命令行中运行以下命令来自动设置清华源: pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple此命令会将…...

什么是数据库回表,又该如何避免
目录 一. 回表的概念二. 回表的影响三. 解决方案1. 使用覆盖索引2. 合理选择索引列3. 避免选择不必要的列4. 分析和优化查询5. 定期更新统计信息6. 避免使用SELECT DISTINCT或GROUP BY7. 使用适当的数据库设计 数据库中的“回表”是指在查询操作中,当数据库需要访问…...

UE5中使用UTexture2D进行纹理绘制
在UE中有时需要在CPU阶段操作像素,生成纹理贴图等,此时可以通过UTexture2D来进行处理,例子如下: 1.CPP部分 首先创建一个蓝图函数库,将UTexture2D的绘制逻辑封装成单个函数: .h: #include &…...

Matlab simulink建模与仿真 第十六章(用户定义函数库)
参考视频:simulink1.1simulink简介_哔哩哔哩_bilibili 一、用户定义函数库中的模块概览 注:MATLAB版本不同,可能有些模块也会有差异,但大体上区别是不大的。 二、Fcn/Matlab Fcn模块 1、Fcn模块 双击Fcn模块,在对话…...

每天练打字2:今日状况——完成击键5第1遍,赛文速度74.71
今日跟打:604字 总跟打:99883字 记录天数:2435天 (实际没有这么多天,这个是注册账号的天数) 平均每天:41字 练习常用单字中500,击键5,键准100%,两遍。&#x…...

从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...

如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...

OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...