MATLAB仿真生成无线通信网络拓扑推理数据集

一、数据集生成程序

Matlab 复制代码
%创建时间:2025年6月3日
%用途:生成不同节点样本,统计稀疏性约束情况
%zhouzhichao


close all
clear

for n = [20,30,40,50]
    dataset_n = 100;
    
    nodes_P = ones(n,1);
       
       
    
    for Sampling_M = [3000]
        %获取一帧信号及对应功率
        [ack,fs] = ack_generate(Sampling_M);
        ack_L = length(ack);
        signal = ack;
        P_signal = sum(abs(signal).^2);
        ack_noise = randn(ack_L, 1);
        P_noise_1 = sum(ack_noise.^2);  % 计算当前噪声的能量
        as_slot_N = round(7*ack_L);
        
        ave_edge = round(1.5*n);
        L = ave_edge*3*a_slot_N;
        signals = zeros(n,L);
        
        
%         for snr=14:-2:0
        for snr=14:14
            
            Signals = zeros(dataset_n,n,L);
            Tp = zeros(dataset_n,n,n);
            Tp_list = cell(dataset_n,1);
            
            A = 10^(snr/10);
            P_noise = P_signal/A;
            alpha = sqrt(P_noise / P_noise_1);  % 计算缩放因子
            noise = alpha*randn(1, L);
            
            for k=1:dataset_n
                disp(["k: ",k])
                pause(0.01)
                
                switch n
                    case 20
                        [tp,tp_list] = a20nodes_tp(nodes_P);
                    case 30
                        [tp,tp_list] = a30nodes_tp(nodes_P);
                    case 40
                        [tp,tp_list] = a40nodes_tp(nodes_P);
                    case 50
                        [tp,tp_list] = a50nodes_tp(nodes_P);
                end
                
                
                c = 0;
                
                
                % alpha = 0.01;
                n_edge = length(tp_list);
                
                for epoch=1:3
                    index_list = randperm(n_edge);
                    for i =index_list
                        this_slot_start_point = c*a_slot_N+1;
                        p = tp_list(i,1);
                        q = tp_list(i,2);
                        P1 = nodes_P(p);
                        P2 = nodes_P(q);
                        
                        %三次响应
                        for m=1:3
                            r_P = 0.9 + (1.1 - 0.9) * rand;
                            signal = r_P*P1*ack;
                            signals(p,this_slot_start_point+(2*m-2)*ack_L:this_slot_start_point+(2*m-1)*ack_L-1) = signal;
                            
                            r_P = 0.9 + (1.1 - 0.9) * rand;
                            signal = r_P*P2*ack;
                            
                            signals(q,this_slot_start_point+(2*m-1)*ack_L:this_slot_start_point+(2*m)*ack_L-1) = signal;
                            
                        end
                        
                        
                        c = c + 1;
                    end
                end
                
                for i=1:n
                    signals(i,:) = signals(i,:) + noise;
                end
                
                
                aa = tp*tp;
                D_list = zeros(n,1);
                for i=1:n
                    D_list(i) = aa(i,i);
                end
                
                
                Signals(k,:,:) = signals;
                Tp(k,:,:) = tp;
                Tp_list{k} = tp_list;
                
                
                %             set(gca, 'FontName', 'Times New Roman');
                save("D:\无线通信网络认知\论文1\大修意见\Reviewer1-3 稀疏性约束统计\graph of differ nodes\"+num2str(n)+"_nodes_dataset_snr-"+num2str(snr)+"_M_"+num2str(Sampling_M)+".mat","Tp","Tp_list","Signals")
            end
        end
    end
end
disp("数据集生成完成")

二、拓扑生成部分

1.生成20个节点的拓扑

Matlab 复制代码
%创建时间:2024年9月2日
%最后修改:2024年9月2日
%zhouzhichao
%自然生长出20节点网络

function [tp,tp_list] = a20nodes_tp(P_list)

% close all
% clear
N = 20;
% P_list = ones(N,1);


tp = zeros(N);
count = 0;

x = zeros(N,1);
y = zeros(N,1);


%%
%中心节点附近的节点,2级别
x(1) = 0;
y(1) = 0;

r2_list = [2,3,4];
a_list = zeros(N,1);

a_list(2) = 0;
a_list(3) = 120/360*2*pi;
a_list(4) = 240/360*2*pi;

x(2) = 1*cos(a_list(2));
y(2) = 1*sin(a_list(2));
x(3) = 1*cos(a_list(3));
y(3) = 1*sin(a_list(3));
x(4) = 1*cos(a_list(4));
y(4) = 1*sin(a_list(4));



tp(1,2)=1;
tp(1,3)=1;
tp(1,4)=1;


%%
%3级节点
m = 5;
r3_list = [];
alpha = 2*pi/m;
for i=1:m
    index = i+4;
    r3_list = [r3_list,index];
    a = 60/360*2*pi+i*alpha;
    a_list(index) = a;
    x(index)=2*cos(a);
    y(index)=2*sin(a);
    
    p = min_d_node(index,r2_list,x,y);
    
    tp(index,p) = 1;
end

%%
%4级节点
m = 8;
r4_list = [];
alpha = 2*pi/m;
for i=1:m
    index = i+9;
    r4_list = [r4_list,index];
    a = 60/360*2*pi+i*alpha;
    a_list(index) = a;
    x(index)=3*cos(a);
    y(index)=3*sin(a);

    p = min_d_node(index,r3_list,x,y);
    
    
    tp(index,p) = 1;
end

%%
m = 3;
% r4_list = [];
alpha = 2*pi/m;
for i=1:m
    index = i+17;
%     r4_list = [r4_list,index];
    a = 60/360*2*pi+i*alpha;
    a_list(index) = a;
    x(index)=4*cos(a);
    y(index)=4*sin(a);
    
    
    p = min_d_node(index,r4_list,x,y);
    
    tp(index,p) = 1;
end



%%
%补环
x = x + (rand(size(x)) - 0.5) * 0.6;
y = y + (rand(size(y)) - 0.5) * 0.6;

tp = tp + tp';
tp = add_circle(tp,x,y);
tp = add_circle(tp,x,y);
% tp = add_circle(tp,x,y);

%%
%绘图



% tp = tp + tp';




% hold on;
% 
% for i = 1:N
%     for j = i+1:N
%         if tp(i, j) == 1
%             plot([x(i) x(j)], [y(i) y(j)], 'b', 'Color', [125/255, 178/255, 251/255]);
%         end
%     end
% end
% 
% for i =1:length(x)
% %     scatter(x(i), y(i), 100*P_list(i), [47/255, 132/255, 248/255], 'filled', 'MarkerFaceAlpha', P_list(i));
%     scatter(x(i), y(i), 100, [47/255, 132/255, 248/255], 'filled', 'MarkerFaceAlpha', P_list(i));
%     text(x(i)-0.1, y(i)+0.4, num2str(i), 'FontSize', 8, 'Color', [0/255, 0/255, 248/255]);
% end
% % scatter(x, y, [], [47/255, 132/255, 248/255], 'filled');
% xlabel('X');
% ylabel('Y');
% x_min = round(min(x)-1);
% x_max = round(max(x)+1);
% y_min = round(min(y)-1);
% y_max = round(max(y)+1);
% xlim([x_min x_max]);
% ylim([y_min y_max]);
% set(gca, 'FontName', 'Times New Roman');
% 
% 
% axis off;


 tp_list = [];
 
 % 遍历拓扑矩阵,找到所有有连接的节点对
 for i = 1:N
     for j = i+1:N
         if tp(i, j) == 1
             % 添加节点对 [i, j] 到 nodePairs 矩阵
             tp_list = [tp_list; i, j];
         end
     end
 end
 
 

2.生成30个节点的拓扑

Matlab 复制代码
%创建时间:2024年8月28日
%最后修改:2024年9月2日
%zhouzhichao
%自然生长出N节点网络

function [tp,tp_list] = a30nodes_tp(P_list)

% close all
% clear

N = 30;
tp = zeros(N);
count = 0;

x = zeros(N,1);
y = zeros(N,1);


%%
%中心节点附近的节点,2级别
x(1) = 0;
y(1) = 0;

r2_list = [2,3,4];
a_list = zeros(N,1);

a_list(2) = 0;
a_list(3) = 120/360*2*pi;
a_list(4) = 240/360*2*pi;

x(2) = 1*cos(a_list(2));
y(2) = 1*sin(a_list(2));
x(3) = 1*cos(a_list(3));
y(3) = 1*sin(a_list(3));
x(4) = 1*cos(a_list(4));
y(4) = 1*sin(a_list(4));



tp(1,2)=1;
tp(1,3)=1;
tp(1,4)=1;


%%
%3级节点
m = 5;
r3_list = [];
alpha = 2*pi/m;
for i=1:m
    index = i+4;
    r3_list = [r3_list,index];
    a = 60/360*2*pi+i*alpha;
    a_list(index) = a;
    x(index)=2*cos(a);
    y(index)=2*sin(a);
    
    p = min_d_node(index,r2_list,x,y);
    
    tp(index,p) = 1;
end

%%
%4级节点
m = 8;
r4_list = [];
alpha = 2*pi/m;
for i=1:m
    index = i+9;
    r4_list = [r4_list,index];
    a = 60/360*2*pi+i*alpha;
    a_list(index) = a;
    x(index)=3*cos(a);
    y(index)=3*sin(a);

    p = min_d_node(index,r3_list,x,y);
    
    
    tp(index,p) = 1;
end

%%
m = 13;
% r4_list = [];
alpha = 2*pi/m;
for i=1:m
    index = i+17;
%     r4_list = [r4_list,index];
    a = 60/360*2*pi+i*alpha;
    a_list(index) = a;
    x(index)=4*cos(a);
    y(index)=4*sin(a);
    
    
    p = min_d_node(index,r4_list,x,y);
    
    tp(index,p) = 1;
end



%%
%补环
x = x + (rand(size(x)) - 0.5) * 0.6;
y = y + (rand(size(y)) - 0.5) * 0.6;

tp = tp + tp';
tp = add_circle(tp,x,y);
tp = add_circle(tp,x,y);
% tp = add_circle(tp,x,y);

%%
%绘图


 tp_list = [];
 
 % 遍历拓扑矩阵,找到所有有连接的节点对
 for i = 1:N
     for j = i+1:N
         if tp(i, j) == 1
             % 添加节点对 [i, j] 到 nodePairs 矩阵
             tp_list = [tp_list; i, j];
         end
     end
 end
 
 

3.生成40个节点的拓扑

Matlab 复制代码
%创建时间:2024年9月2日
%最后修改:2024年9月2日
%zhouzhichao
%自然生长出N节点网络

function [tp,tp_list] = a40nodes_tp(P_list)

% close all
% clear

N = 40;
% P_list = ones(N,1);


tp = zeros(N);



count = 0;

x = zeros(N,1);
y = zeros(N,1);


%%
%中心节点附近的节点,2级别
x(1) = 0;
y(1) = 0;

r2_list = [2,3,4];
a_list = zeros(N,1);

a_list(2) = 0;
a_list(3) = 120/360*2*pi;
a_list(4) = 240/360*2*pi;

x(2) = 1*cos(a_list(2));
y(2) = 1*sin(a_list(2));
x(3) = 1*cos(a_list(3));
y(3) = 1*sin(a_list(3));
x(4) = 1*cos(a_list(4));
y(4) = 1*sin(a_list(4));



tp(1,2)=1;
tp(1,3)=1;
tp(1,4)=1;


%%
%3级节点
m = 5;
r3_list = [];
alpha = 2*pi/m;
for i=1:m
    index = i+4;
    r3_list = [r3_list,index];
    a = 60/360*2*pi+i*alpha;
    a_list(index) = a;
    x(index)=2*cos(a);
    y(index)=2*sin(a);
    
    p = min_d_node(index,r2_list,x,y);
    
    tp(index,p) = 1;
end

%%
%4级节点
m = 8;
r4_list = [];
alpha = 2*pi/m;
for i=1:m
    index = i+9;
    r4_list = [r4_list,index];
    a = 60/360*2*pi+i*alpha;
    a_list(index) = a;
    x(index)=3*cos(a);
    y(index)=3*sin(a);

    p = min_d_node(index,r3_list,x,y);
    
    
    tp(index,p) = 1;
end

%%
m = 13;
r5_list = [];
alpha = 2*pi/m;
for i=1:m
    index = i+17;
    r5_list = [r5_list,index];
    a = 60/360*2*pi+i*alpha;
    a_list(index) = a;
    x(index)=4*cos(a);
    y(index)=4*sin(a);
    
    
    p = min_d_node(index,r4_list,x,y);
    
    tp(index,p) = 1;
end


%%
m = 10;
% r4_list = [];
alpha = 2*pi/m;
for i=1:m
    index = i+30;
%     r4_list = [r4_list,index];
    a = 60/360*2*pi+i*alpha;
    a_list(index) = a;
    x(index)=5*cos(a);
    y(index)=5*sin(a);
    
    
    p = min_d_node(index,r5_list,x,y);
    
    tp(index,p) = 1;
end


%%
%补环
x = x + (rand(size(x)) - 0.5) * 0.6;
y = y + (rand(size(y)) - 0.5) * 0.6;

tp = tp + tp';
tp = add_circle(tp,x,y);
tp = add_circle(tp,x,y);
% tp = add_circle(tp,x,y);

%%

 tp_list = [];
 
 % 遍历拓扑矩阵,找到所有有连接的节点对
 for i = 1:N
     for j = i+1:N
         if tp(i, j) == 1
             % 添加节点对 [i, j] 到 nodePairs 矩阵
             tp_list = [tp_list; i, j];
         end
     end
 end
 
 

4.生成50个节点的拓扑

python 复制代码
%创建时间:2024年9月2日
%最后修改:2024年9月2日
%zhouzhichao
%自然生长出N节点网络

function [tp,tp_list] = a50nodes_tp(P_list)

% close all
% clear

N = 50;
% P_list = ones(N,1);

 
tp = zeros(N);



count = 0;

x = zeros(N,1);
y = zeros(N,1);


%%
%中心节点附近的节点,2级别
x(1) = 0;
y(1) = 0;

r2_list = [2,3,4];
a_list = zeros(N,1);

a_list(2) = 0;
a_list(3) = 120/360*2*pi;
a_list(4) = 240/360*2*pi;

x(2) = 1*cos(a_list(2));
y(2) = 1*sin(a_list(2));
x(3) = 1*cos(a_list(3));
y(3) = 1*sin(a_list(3));
x(4) = 1*cos(a_list(4));
y(4) = 1*sin(a_list(4));



tp(1,2)=1;
tp(1,3)=1;
tp(1,4)=1;


%%
%3级节点
m = 5;
r3_list = [];
alpha = 2*pi/m;
for i=1:m
    index = i+4;
    r3_list = [r3_list,index];
    a = 60/360*2*pi+i*alpha;
    a_list(index) = a;
    x(index)=2*cos(a);
    y(index)=2*sin(a);
    
    p = min_d_node(index,r2_list,x,y);
    
    tp(index,p) = 1;
end

%%
%4级节点
m = 8;
r4_list = [];
alpha = 2*pi/m;
for i=1:m
    index = i+9;
    r4_list = [r4_list,index];
    a = 60/360*2*pi+i*alpha;
    a_list(index) = a;
    x(index)=3*cos(a);
    y(index)=3*sin(a);

    p = min_d_node(index,r3_list,x,y);
    
    
    tp(index,p) = 1;
end

%%
m = 13;
r5_list = [];
alpha = 2*pi/m;
for i=1:m
    index = i+17;
    r5_list = [r5_list,index];
    a = 60/360*2*pi+i*alpha;
    a_list(index) = a;
    x(index)=4*cos(a);
    y(index)=4*sin(a);
    
    
    p = min_d_node(index,r4_list,x,y);
    
    tp(index,p) = 1;
end


%%
m = 20;
% r4_list = [];
alpha = 2*pi/m;
for i=1:m
    index = i+30;
%     r4_list = [r4_list,index];
    a = 60/360*2*pi+i*alpha;
    a_list(index) = a;
    x(index)=5*cos(a);
    y(index)=5*sin(a);
    
    
    p = min_d_node(index,r5_list,x,y);
    
    tp(index,p) = 1;
end


%%
%补环
x = x + (rand(size(x)) - 0.5) * 0.6;
y = y + (rand(size(y)) - 0.5) * 0.6;

tp = tp + tp';
tp = add_circle(tp,x,y);
tp = add_circle(tp,x,y);
% tp = add_circle(tp,x,y);

%%

 tp_list = [];
 
 % 遍历拓扑矩阵,找到所有有连接的节点对
 for i = 1:N
     for j = i+1:N
         if tp(i, j) == 1
             % 添加节点对 [i, j] 到 nodePairs 矩阵
             tp_list = [tp_list; i, j];
         end
     end
 end
 
 

三、信号生成部分

5.加载实采波形

Matlab 复制代码
% close all
% clear
%zhouzhichao
%创建时间:2024年8月25日
%最后修改时间:2024年9月3日

function [Ack,fs] = ack_generate(M)

load("D:\无线通信网络认知\论文1\experiment\直推式拓扑推理实验\拓扑生成\Ack.mat");

% M = 2000;
Ack = downsample(Ack, M);
fs = 1e6/M;

6.在拓扑中添加环状结构

Matlab 复制代码
x = x + (rand(size(x)) - 0.5) * 0.6;%位置x,y加一些随机性
y = y + (rand(size(y)) - 0.5) * 0.6;

tp = tp + tp';
tp = add_circle(tp,x,y);
tp = add_circle(tp,x,y);
Matlab 复制代码
function new_tp = add_circle(tp,x,y)
aa = tp*tp;
N = length(tp);
D_list = zeros(N,1);
for i =1:length(tp)
    D_list(i) = aa(i,i);
end

col_list = find(D_list<3);


i=col_list(randi([1,length(col_list)]));
allow_list = allow_nodes(i,tp,x,y);
% if isempty(allow_list)==1
%     continue
% end
min_i = min_d_node(i,allow_list,x,y);
tp(i,min_i)=1;
tp(min_i,i)=1;
% count = count + 1;

new_tp = tp;

7.大规模网络拓扑生成

Matlab 复制代码
%创建时间:2025年6月5日
%zhouzhichao
%自然生长出100节点的网络

% function [tp,tp_list] = a100nodes_tp(P_list)

close all
clear

N = 100;
P_list = ones(N,1);

 
tp = zeros(N);



count = 0;

x = zeros(N,1);%存储每个节点的位置,以连接各个节点
y = zeros(N,1);

%%
%初级节点
%节点数量:1
%节点总数:1
%半径:0

x(1) = 0;
y(1) = 0;


%%
%中心节点附近的节点,2级节点
%节点数量:3
%节点总数:4
%半径:1

r2_list = [2,3,4];
a_list = zeros(N,1);

a_list(2) = 0;
a_list(3) = 120/360*2*pi;
a_list(4) = 240/360*2*pi;

x(2) = 1*cos(a_list(2));
y(2) = 1*sin(a_list(2));
x(3) = 1*cos(a_list(3));
y(3) = 1*sin(a_list(3));
x(4) = 1*cos(a_list(4));
y(4) = 1*sin(a_list(4));



tp(1,2)=1;
tp(1,3)=1;
tp(1,4)=1;


%%
%3级节点
%节点数量:5
%节点总数:9
%半径:2

m = 5;
r3_list = [];%存储每个节点的索引,以连接各个节点
alpha = 2*pi/m;
for i=1:m
    index = i+4;
    r3_list = [r3_list,index];
    a = 60/360*2*pi+i*alpha;
    a_list(index) = a;
    x(index)=2*cos(a);
    y(index)=2*sin(a);
    
    p = min_d_node(index,r2_list,x,y);
    
    tp(index,p) = 1;
end

%%
%4级节点
%节点数量:8
%节点总数:17
%半径:3

m = 8;
r4_list = [];%存储每个节点的索引,以连接各个节点
alpha = 2*pi/m;
for i=1:m
    index = i+9;
    r4_list = [r4_list,index];
    a = 60/360*2*pi+i*alpha;
    a_list(index) = a;
    x(index)=3*cos(a);
    y(index)=3*sin(a);

    p = min_d_node(index,r3_list,x,y);
    
    
    tp(index,p) = 1;
end

%%
%5级节点
%节点数量:13
%节点总数:30
%半径:4

m = 13;
r5_list = [];%存储每个节点的索引,以连接各个节点
alpha = 2*pi/m;
for i=1:m
    index = i+17;
    r5_list = [r5_list,index];
    a = 60/360*2*pi+i*alpha;
    a_list(index) = a;
    x(index)=4*cos(a);
    y(index)=4*sin(a);
    
    
    p = min_d_node(index,r4_list,x,y);
    
    tp(index,p) = 1;
end


%%
%6级节点
%节点数量:20
%节点总数:50
%半径:5

m = 20;
r6_list = [];%存储每个节点的索引,以连接各个节点
alpha = 2*pi/m;
for i=1:m
    index = i+30;
    r6_list = [r6_list,index];
    a = 60/360*2*pi+i*alpha;
    a_list(index) = a;
    x(index)=5*cos(a);
    y(index)=5*sin(a);
    
    
    p = min_d_node(index,r5_list,x,y);%选最近的节点连接起来
    
    tp(index,p) = 1;
end

%%
%7级节点
%节点数量:35
%节点总数:85
%半径:6

m = 35;
r7_list = [];
alpha = 2*pi/m;
for i=1:m
    index = i+50;
    r7_list = [r7_list,index];
    a = 60/360*2*pi+i*alpha;
    a_list(index) = a;
    x(index)=6*cos(a);
    y(index)=6*sin(a);
    
    
    p = min_d_node(index,r6_list,x,y);
    
    tp(index,p) = 1;
end

%%
%8级节点
%节点数量:15
%节点总数:100
%半径:7

m = 15;
r8_list = [];
alpha = 2*pi/m;
for i=1:m
    index = i+85;
    r8_list = [r8_list,index];
    a = 60/360*2*pi+i*alpha;
    a_list(index) = a;
    x(index)=7*cos(a);
    y(index)=7*sin(a);
    
    
    p = min_d_node(index,r7_list,x,y);
    
    tp(index,p) = 1;
end

%%
%补环
x = x + (rand(size(x)) - 0.5) * 0.6;%位置x,y加一些随机性
y = y + (rand(size(y)) - 0.5) * 0.6;

tp = tp + tp';
tp = add_circle(tp,x,y);
tp = add_circle(tp,x,y);
% tp = add_circle(tp,x,y);

%%
%绘图



% tp = tp + tp';




grid on;
hold on;

for i = 1:N
    for j = i+1:N
        if tp(i, j) == 1
            plot([x(i) x(j)], [y(i) y(j)], 'b', 'Color', [125/255, 178/255, 251/255]);
        end
    end
end

for i =1:length(x)
%     scatter(x(i), y(i), 100*P_list(i), [47/255, 132/255, 248/255], 'filled', 'MarkerFaceAlpha', P_list(i));
    scatter(x(i), y(i), 100, [47/255, 132/255, 248/255], 'filled', 'MarkerFaceAlpha', P_list(i));
    text(x(i)-0.1, y(i)+0.4, num2str(i), 'FontSize', 8, 'Color', [0/255, 0/255, 248/255]);
end
% scatter(x, y, [], [47/255, 132/255, 248/255], 'filled');
xlabel('X');
ylabel('Y');
x_min = round(min(x)-1);
x_max = round(max(x)+1);
y_min = round(min(y)-1);
y_max = round(max(y)+1);
xlim([x_min x_max]);
ylim([y_min y_max]);
set(gca, 'FontName', 'Times New Roman');


axis off;

 tp_list = [];
 
 % 遍历拓扑矩阵,找到所有有连接的节点对
 for i = 1:N
     for j = i+1:N
         if tp(i, j) == 1
             % 添加节点对 [i, j] 到 nodePairs 矩阵
             tp_list = [tp_list; i, j];
         end
     end
 end
 
 

早期的一些拓扑生成结果,感觉效果都不是很好,怎么都不像一个正常的网络

相关推荐
Best_Me071 分钟前
深度学习模块缝合
人工智能·深度学习
LUCIAZZZ8 分钟前
HikariCP数据库连接池原理解析
java·jvm·数据库·spring·springboot·线程池·连接池
YuTaoShao19 分钟前
【论文阅读】YOLOv8在单目下视多车目标检测中的应用
人工智能·yolo·目标检测
我在北京coding25 分钟前
300道GaussDB(WMS)题目及答案。
数据库·gaussdb
FakeOccupational30 分钟前
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
网络·游戏
开发者工具分享36 分钟前
如何应对敏捷转型中的团队阻力
开发语言
小Tomkk37 分钟前
阿里云 RDS mysql 5.7 怎么 添加白名单 并链接数据库
数据库·mysql·阿里云
行云流水剑42 分钟前
【学习记录】如何使用 Python 提取 PDF 文件中的内容
python·学习·pdf
gregmankiw42 分钟前
C#调用Rust动态链接库DLL的案例
开发语言·rust·c#
算家计算1 小时前
字节开源代码模型——Seed-Coder 本地部署教程,模型自驱动数据筛选,让每行代码都精准落位!
人工智能·开源