【数据分析】通过python分析提取matlab工作区中的数据

#%%
import scipy.io
import pandas as pd
import numpy as np

# Load the .mat file
file_path = 'clay_C.mat'
mat_data = scipy.io.loadmat(file_path)

## 建立结果表格
# 定义行、列名
columns = ['0.1', '0.5', '1', '2', '3', '4', '5']
index = ['0.1', '0.5', '1', '2', '3', '4', '5']

my_psnrs_mean = pd.DataFrame(np.nan,index = index, columns=columns)

my_ssims_mean = pd.DataFrame(np.nan,index = index, columns=columns)

my_fsims_mean = pd.DataFrame(np.nan,index = index, columns=columns)

my_ergas_mean = pd.DataFrame(np.nan,index = index, columns=columns)
#%%
# 假设MAT文件中包含一个名为'C'的数据变量
data = mat_data['C']
#%%
# 将数据转换为DataFrame
df = pd.DataFrame(data)
df = df.transpose()
#%%
for i in range(len(df)):
    row = df.iloc[i][0]
    
    my_df = pd.DataFrame(row)
    
    psnrs_mean = my_df.iloc[0,0][0][-1]
    ssims_mean = my_df.iloc[0,1][0][-1]
    fsims_mean = my_df.iloc[0,2][0][-1]
    ergas_mean = my_df.iloc[0,3][0][-1]
    tau_1 = my_df.iloc[0,4][0][-1]
    tau_2 = my_df.iloc[0,5][0][-1]
    
    my_psnrs_mean.loc[str(tau_1),str(tau_2)] = psnrs_mean
    
    my_ssims_mean.loc[str(tau_1),str(tau_2)] = ssims_mean
    
    my_fsims_mean.loc[str(tau_1),str(tau_2)] = fsims_mean
    
    my_ergas_mean.loc[str(tau_1),str(tau_2)] = ergas_mean
#%%
my_psnrs_mean*10
#%%
my_ssims_mean*10
#%%
my_fsims_mean*10
#%%
my_ergas_mean*10

代码详细分析

这段代码从MAT文件中读取数据,并将其转换为多个Pandas DataFrame,以便进行后续的分析和处理。以下是代码的详细分析:

1. 导入库和读取MAT文件

import scipy.io
import pandas as pd
import numpy as np

# Load the .mat file
file_path = 'clay_C.mat'
mat_data = scipy.io.loadmat(file_path)

这里使用了scipy.io.loadmat函数来读取MAT文件,并将其存储在变量mat_data中。

2. 建立结果表格

# 定义行、列名
columns = ['0.1', '0.5', '1', '2', '3', '4', '5']
index = ['0.1', '0.5', '1', '2', '3', '4', '5']

my_psnrs_mean = pd.DataFrame(np.nan,index = index, columns=columns)
my_ssims_mean = pd.DataFrame(np.nan,index = index, columns=columns)
my_fsims_mean = pd.DataFrame(np.nan,index = index, columns=columns)
my_ergas_mean = pd.DataFrame(np.nan,index = index, columns=columns)

这里创建了四个空的DataFrame来存储结果,每个DataFrame的行和列都是['0.1', '0.5', '1', '2', '3', '4', '5']

3. 提取数据并转换为DataFrame

# 假设MAT文件中包含一个名为'C'的数据变量
data = mat_data['C']

# 将数据转换为DataFrame
df = pd.DataFrame(data)
df = df.transpose()

从MAT文件中提取名为'C'的数据变量,将其转换为Pandas DataFrame,并对其进行转置。

4. 迭代每一行并提取指标

for i in range(len(df)):
    row = df.iloc[i][0]
    
    my_df = pd.DataFrame(row)
    
    psnrs_mean = my_df.iloc[0,0][0][-1]
    ssims_mean = my_df.iloc[0,1][0][-1]
    fsims_mean = my_df.iloc[0,2][0][-1]
    ergas_mean = my_df.iloc[0,3][0][-1]
    tau_1 = my_df.iloc[0,4][0][-1]
    tau_2 = my_df.iloc[0,5][0][-1]
    
    my_psnrs_mean.loc[str(tau_1),str(tau_2)] = psnrs_mean
    my_ssims_mean.loc[str(tau_1),str(tau_2)] = ssims_mean
    my_fsims_mean.loc[str(tau_1),str(tau_2)] = fsims_mean
    my_ergas_mean.loc[str(tau_1),str(tau_2)] = ergas_mean

遍历DataFrame的每一行,并提取每行的各项指标值。具体操作如下:

  • 将每一行的第一个元素转换为新的DataFrame my_df
  • 提取 psnrs_meanssims_meanfsims_meanergas_meantau_1tau_2 值。
  • 将这些值填入相应的结果DataFrame中,使用tau_1tau_2作为索引。

5. 打印结果

my_psnrs_mean*10
my_ssims_mean*10
my_fsims_mean*10
my_ergas_mean*10

这里将每个结果DataFrame中的值乘以10并显示出来。

总结

该代码的主要目的是从MAT文件中读取数据,并将其中包含的各种性能指标提取出来,存储到多个Pandas DataFrame中。每个结果DataFrame的行和列是tau_1tau_2的组合,存储对应的psnrs_meanssims_meanfsims_meanergas_mean值。

原代码

%SpaTRPCA_BSDtest200_5method_Corr10
clear;clc;close all
addpath(genpath('lib'));
addpath(genpath('data'));
addpath(genpath('competing methods'));

rhos = 0.1; %Percent of corrupted pixels

% %% Options settings
% opts.mu = 1e-2;
% opts.tol = 1e-6;
% opts.rho = 1.1;
% opts.max_iter = 500;0
% opts.DEBUG = 0;
% opts.tau_F= 2;
  
method='TCTV';
 
datadir = 'data/CAVE_USED';
seqs = dir(datadir);
seq3 = seqs(3:end); 
n_img=length(seq3);

temp=zeros(n_img,1);

psnrs_TCTV=temp;psnrs_FTCTV=temp;psnrs_HTCTV=temp; psnrs_CTCTV=temp; psnrs_WTCTV=temp; psnrs_GTCTV=temp; 

ssims_TCTV=temp;ssims_FTCTV=temp;ssims_HTCTV=temp; ssims_CTCTV=temp; ssims_WTCTV=temp; ssims_GTCTV=temp; 

fsims_TCTV=temp;fsims_FTCTV=temp;fsims_HTCTV=temp; fsims_CTCTV=temp; fsims_WTCTV=temp; fsims_GTCTV=temp; 

ergas_TCTV=temp;ergas_FTCTV=temp;ergas_HTCTV=temp; ergas_CTCTV=temp; ergas_WTCTV=temp; ergas_GTCTV=temp; 

sams_TCTV=temp;sams_FTCTV=temp;sams_HTCTV=temp; sams_CTCTV=temp; sams_WTCTV=temp; sams_GTCTV=temp; 

times_TCTV=temp;times_FTCTV=temp;times_HTCTV=temp; times_CTCTV=temp; times_WTCTV=temp; times_GTCTV=temp; 

Temp=cell(length(seq3),1);
Orig_Multi=Temp;Noisy_Multi=Temp;TCTV_Multi=Temp;FTCTV_Multi=Temp;HTCTV_Multi=Temp;CTCTV_Multi=Temp;WTCTV_Multi=Temp;GTCTV_Multi=Temp;

C = cell(1,20);
iter=1;
sum_iter = 50;
sum_time = 0;
% for tau_1 = [1,2,3,4,5,6,7,8,9,10]
% for tau_1 = [0.1,0.2,0.3,0.4,0.5]
for tau_1 = [0.1, 0.5, 1, 2, 3, 4, 5 ]
% for tau_2 = [1,2,3,4,5,6,7,8,9,10]
% for tau_2 = [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1]
for tau_2 = [0.1, 0.5, 1, 2, 3, 4, 5]
start_tic = tic;
%% Perform recovery
for i = 5
    % 1 for balloons  2 for beads
    % 3 for cd        4 for chart
    % 5 for clay      6 for cloth
    % 7 for egyptian  8 for feathers
    % 9 for flowers   10 for glass
    %% load data
    fname = seq3(i).name;
    pic_TNN_Weight_Lame = [datadir '/' fname];
    load(fname)
    %% 0-1 Centralization
    data_min = min(X(:));
    data_max = max(X(:));
    X = (X - data_min) / (data_max - data_min);
    %% add noise
%     [n1,n2,n3] = size(X);
%     Xn = X; Yn=reshape(Xn,[n1*n2,n3]);
%     ind = find(rand(n1*n2,1)<rhos);
%     Yn(ind,:)=rand(length(ind),n3);
%     Xn=reshape(Yn,[n1,n2,n3]);
    [height, width, band] = size(X);
    for ii = 1:band
        Xn(:,:,ii) = imnoise(X(:,:,ii), 'salt & pepper', rhos);
    end
    methods_index = 1;

    %% Method 1: TCTV
%     disp('......Run TCTV......')
%     opts = [];
%     opts.rho = 1.25;
%     opts.directions = [1,2,3]; % consider the lowrankness and smoothness both along the spatial and spectral directions
%     tic
%     Xhat_TCTV = TCTV_TRPCA(Xn, opts);
%     times_TCTV(i) = toc;
%     [psnrs_TCTV(i), ssims_TCTV(i), fsims_TCTV(i), ergas_TCTV(i), sams_TCTV(i)] = HSI_QA(X * 255, Xhat_TCTV* 255);
% %     TCTV_psnr = psnr(X , Xhat_TCTV);
%     Xhat{methods_index}=Xhat_TCTV;
%     div{methods_index}=1-abs((X-Xhat_TCTV));
%     methods_index = methods_index+1;

%     %% Method 2: FTCTV  Enhanced Fair 
%     disp('......Run FTCTV......')
%     opts = [];
%     opts.rho = 1.25;
%     opts.directions = [1,2,3]; % consider the lowrankness and smoothness both along the spatial and spectral directions
%     opts.tau_F=[tau_1 tau_1, tau_1];
%     opts.tauL1=tau_2;
%     tic
%     Xhat_FTCTV = FTCTV_TRPCA(Xn, opts);
%     times_FTCTV(i) = toc;
%     [psnrs_FTCTV(i), ssims_FTCTV(i), fsims_FTCTV(i), ergas_FTCTV(i), sams_FTCTV(i)] = HSI_QA(X * 255, Xhat_FTCTV * 255);
%     Xhat{methods_index}=Xhat_FTCTV;
%     div{methods_index}=1-abs((X-Xhat_FTCTV));
%     methods_index = methods_index+1;
% 
%     %% Method 3: HTCTV  Enhanced Huber
%     disp('......Run HTCTV......')
%     opts = [];
%     opts.rho = 1.25;
%     opts.directions = [1,2,3]; % consider the lowrankness and smoothness both along the spatial and spectral directions
%     opts.tau_F=[tau_1 tau_1, tau_1];
%     opts.tauL1=tau_2;
%     tic
%     Xhat_HTCTV = HTCTV_TRPCA(Xn, opts);
%     times_HTCTV(i) = toc;
%     [psnrs_HTCTV(i), ssims_HTCTV(i), fsims_HTCTV(i), ergas_HTCTV(i), sams_HTCTV(i)] = HSI_QA(X * 255, Xhat_HTCTV * 255);
%     Xhat{methods_index}=Xhat_HTCTV;
%     div{methods_index}=1-abs((X-Xhat_HTCTV));
%     methods_index = methods_index+1;
% 
%     %% Method 4: CTCTV  Enhanced Cauchy
%     disp('......Run CTCTV......')
%     opts = [];
%     opts.rho = 1.25;
%     opts.directions = [1,2,3]; % consider the lowrankness and smoothness both along the spatial and spectral directions
%     opts.tau_F=[tau_1 tau_1, tau_1];
%     opts.tauL1=tau_2;
%     tic
%     Xhat_CTCTV = CTCTV_TRPCA(Xn, opts);
%     times_CTCTV(i) = toc;
%     [psnrs_CTCTV(i), ssims_CTCTV(i), fsims_CTCTV(i), ergas_CTCTV(i), sams_CTCTV(i)] = HSI_QA(X * 255, Xhat_CTCTV * 255);
%     Xhat{methods_index}=Xhat_CTCTV;
%     div{methods_index}=1-abs((X-Xhat_CTCTV));
%     methods_index = methods_index+1;
% 
%     %% Method 5: WTCTV  Enhanced Welsch
%     disp('......Run WTCTV......')
%     opts = [];
%     opts.rho = 1.25;
%     opts.directions = [1,2,3]; % consider the lowrankness and smoothness both along the spatial and spectral directions
%     opts.tau_F=[tau_1 tau_1, tau_1];
%     opts.tauL1=tau_2;
%     tic
%     Xhat_WTCTV = WTCTV_TRPCA(Xn, opts);
%     times_WTCTV(i) = toc;
%     [psnrs_WTCTV(i), ssims_WTCTV(i), fsims_WTCTV(i), ergas_WTCTV(i), sams_WTCTV(i)] = HSI_QA(X * 255, Xhat_WTCTV * 255);
%     Xhat{methods_index}=Xhat_WTCTV;
%     div{methods_index}=1-abs((X-Xhat_WTCTV));
%     methods_index = methods_index+1;

    %% Method 6: GTCTV  Enhanced General loss
    disp('......Run GTCTV......')
    opts = [];
    opts.rho = 1.25;
    opts.directions = [1,2,3]; % consider the lowrankness and smoothness both along the spatial and spectral directions
    opts.tau_F=[tau_1 tau_1, tau_1];
    opts.tauL1=tau_2;
    General_option = 2;
    % 2 for Enhanced Geman-McClure loss
    % 1 for Enhanced Cauchy loss
    tic
    Xhat_GTCTV = GTCTV_TRPCA(Xn, opts ,General_option);
    times_GTCTV(i) = toc;
    [psnrs_GTCTV(i), ssims_GTCTV(i), fsims_GTCTV(i), ergas_GTCTV(i), sams_GTCTV(i)] = HSI_QA(X * 255, Xhat_GTCTV * 255);
    Xhat{methods_index}=Xhat_GTCTV;
    div{methods_index}=1-abs((X-Xhat_GTCTV));
    methods_index = methods_index+1;

%     fprintf('\n %d-th image, TCTV   psnr=%.4f, ssim=%.4f, fsim=%.4f\n',i, psnrs_TCTV(i),ssims_TCTV(i),fsims_TCTV(i));
%     fprintf('\n              FTCTV  psnr=%.4f, ssim=%.4f, fsim=%.4f\n',   psnrs_FTCTV(i),ssims_FTCTV(i),fsims_FTCTV(i));
%     fprintf('\n              HTCTV  psnr=%.4f, ssim=%.4f, fsim=%.4f\n',   psnrs_HTCTV(i),ssims_HTCTV(i),fsims_HTCTV(i));
%     fprintf('\n              CTCTV  psnr=%.4f, ssim=%.4f, fsim=%.4f\n',   psnrs_CTCTV(i),ssims_CTCTV(i),fsims_CTCTV(i));
%     fprintf('\n              WTCTV  psnr=%.4f, ssim=%.4f, fsim=%.4f\n',   psnrs_WTCTV(i),ssims_WTCTV(i),fsims_WTCTV(i));
%     fprintf('\n              GTCTV  psnr=%.4f, ssim=%.4f, fsim=%.4f\n',   psnrs_GTCTV(i),ssims_GTCTV(i),fsims_GTCTV(i));
    
    psnrs_i=[psnrs_TCTV(i),psnrs_FTCTV(i),psnrs_HTCTV(i),psnrs_CTCTV(i),psnrs_WTCTV(i),psnrs_GTCTV(i)];
    ssims_i=[ssims_TCTV(i),ssims_FTCTV(i),ssims_HTCTV(i),ssims_CTCTV(i),ssims_WTCTV(i),ssims_GTCTV(i)];  
    ergas_i=[ergas_TCTV(i),ergas_FTCTV(i),ergas_HTCTV(i),ergas_CTCTV(i),ergas_WTCTV(i),ergas_GTCTV(i)]; 
   
    disp(['PSNR_i=       ',num2str(psnrs_i)])  
    disp(['SSIM_i=       ',num2str(ssims_i)])
    disp(['ERGAS_i=       ',num2str(ergas_i)])
   
%     Orig_Multi{i}=X;Noisy_Multi{i}=Xn;TCTV_Multi{i}=Xhat_TCTV;FTCTV_Multi{i}=Xhat_FTCTV;HTCTV_Multi{i}=Xhat_HTCTV;
%     j=1;
end
methodName={'TCTV','FTCTV','HTCTV','CTCTV','WTCTV','GTCTV'};
enList=[1,2,3,4,5,6];
psnrs_all=[psnrs_TCTV,psnrs_FTCTV,psnrs_HTCTV,psnrs_CTCTV,psnrs_WTCTV,psnrs_GTCTV]; 
psnrs_mean=mean(psnrs_all,1);
ssims_all=[ssims_TCTV,ssims_FTCTV,ssims_HTCTV,ssims_CTCTV,ssims_WTCTV,ssims_GTCTV];
ssims_mean=mean(ssims_all,1);
fsims_all=[fsims_TCTV,fsims_FTCTV,fsims_HTCTV,fsims_CTCTV,fsims_WTCTV,fsims_GTCTV]; 
fsims_mean=mean(fsims_all,1);
ergas_all=[ergas_TCTV,ergas_FTCTV,ergas_HTCTV,ergas_CTCTV,ergas_WTCTV,ergas_GTCTV]; 
ergas_mean=mean(ergas_all,1);
times_all=[times_TCTV,times_FTCTV,times_HTCTV,times_CTCTV,times_WTCTV,times_GTCTV]; 
times_mean=mean(times_all,1);

C{iter} = {psnrs_mean, ssims_mean, fsims_mean, ergas_mean, tau_1, tau_2};
epoch_time = toc(start_tic);
sum_time = sum_time+epoch_time;
fprintf('Progress:%d/%d. Epoch Time:%.2f. Progress Time:%.2f. Time needs:%.2f.\n',iter,sum_iter,epoch_time/60,sum_time/60,((sum_time)/iter)*(sum_iter-iter)/60);
iter = iter+1;
end
end

%% Show results 
showHSIResult(Xhat,X,Xn,div,methodName,enList,31,31);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/779947.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Arcgis Api 三维聚合支持最新版API

Arcgis Api 三维聚合支持最新版API 最近有同学问我Arcgis api 三维聚合&#xff0c;官方还不支持三维聚合API&#xff0c;二维可以。所以依旧是通过GraphicLayers 类来实现&#xff0c;可支持最新Arcgis Api版本 效果图&#xff1a;

简单且循序渐进地查找软件中Bug的实用方法

“Bug”这个词常常让许多开发者感到头疼。即使是经验丰富、技术娴熟的开发人员在开发过程中也难以避免遭遇到 Bug。 软件中的故障会让程序员感到挫败。我相信在你的软件开发生涯中&#xff0c;也曾遇到过一些难以排查的问题。软件中的错误可能会导致项目无法按时交付。因此&…

初识STM32:芯片基本信息

STM32简介 STM32是ST公司基于ARM公司的Cortex-M内核开发的32位微控制器。 ARM公司是全球领先的半导体知识产权&#xff08;IP&#xff09;提供商&#xff0c;全世界超过95%的智能手机和平板电脑都采用ARM架构。 ST公司于1987年由意大利的SGS微电子与法国的Thomson半导体合并…

linux软链接和硬链接的区别

1 创建软链接和硬链接 如下图所示&#xff0c;一开始有两个文件soft和hard。使用 ln -s soft soft1创建软链接&#xff0c;soft1是soft的软链接&#xff1b;使用ln hard hard1创建硬链接&#xff0c;hard1是hard的硬链接。可以看到软链接的文件类型和其它3个文件的文件类型是不…

从“移花接木”到“提质增效”——详解嫁接打印技术

嫁接打印&#xff0c;是融合了3D打印与传统制造精髓的创新技术&#xff0c;其核心在于&#xff0c;通过巧妙地将传统模具加工与先进的3D打印技术相结合&#xff0c;实现了模具制造的“提质、增效、降本”。 嫁接打印的定义 简而言之&#xff0c;嫁接打印是一种增减材混合制造的…

uniapp报错--app.json: 在项目根目录未找到 app.json

【问题】 刚创建好的uni-app项目&#xff0c;运行微信小程序控制台报错如下&#xff1a; 【解决方案】 1. 程序根目录打开project.config.json文件 2. 配置miniprogramRoot&#xff0c;指定小程序代码的根目录 我的小程序代码编译后的工程文件目录为&#xff1a;dist/dev/mp…

阿里云Elasticsearch-趣味体验

阿里云Elasticsearch-趣味体验 什么是阿里云Elasticsearch阿里云Elasticsearch开通服务查看Elasticsearch实例配置Kibana公网IP登录Elasticsearch添加测试数据 Kibana数据分析查看数据字段筛选数据页面条件筛选KQL语法筛选保存搜索语句导出筛选结果指定列表展示字段写在最后 什…

multisim中关于74ls192n和DSWPK开关仿真图分析(减法计数器)

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

DAMA学习笔记(四)-数据建模与设计

1.引言 数据建模是发现、分析和确定数据需求的过程&#xff0c;用一种称为数据模型的精确形式表示和传递这些数据需求。建模过程中要求组织发现并记录数据组合的方式。数据常见的模式: 关系模式、多维模式、面向对象模式、 事实模式、时间序列模式和NoSQL模式。按照描述详细程度…

实现资产优化管理:智慧校园资产分类功能解析

在构建智慧校园的过程中&#xff0c;细致入微的资产管理是确保教育资源高效运作的关键一环&#xff0c;而资产分类功能则扮演着举足轻重的角色。系统通过精心设计的分类体系&#xff0c;将校园内的各类资产&#xff0c;从昂贵的教学设备到日常使用的办公物资&#xff0c;乃至无…

S32DS S32 Design Studio for S32 Platform 3.5 代码显示行号与空白符

介绍 NXP S32DS&#xff0c;全称 S32 Design Studio&#xff0c;s32 系列芯片默认使用 S32 Design Studio for S32 Platform 作为 IDE 集成开发环境&#xff0c;当前版本 S32 Design Studio for S32 Platform 3.5&#xff0c;IDE 可以简称 s32DS 使用 S32DS&#xff0c;可以认…

数据结构算法-排序(一)-冒泡排序

什么是冒泡排序 冒泡排序&#xff1a;在原数组中通过相邻两项元素的比较&#xff0c;交换而完成的排序算法。 算法核心 数组中相邻两项比较、交换。 算法复杂度 时间复杂度 实现一次排序找到最大值需要遍历 n-1次(n为数组长度) 需要这样的排序 n-1次。 需要 (n-1) * (n-1) —…

240706_昇思学习打卡-Day18-基于MindSpore的GPT2文本摘要

240706_昇思学习打卡-Day18-基于MindSpore的GPT2文本摘要 今天做一个根据一段文章提取摘要的提取器&#xff0c;基于nlpcc2017摘要数据&#xff0c;内容为新闻正文及其摘要&#xff0c;就是训练集及标签。 首先我们来预装以下MindSpore环境 %%capture captured_output # 实验…

昇思MindSpore学习笔记4-05生成式--Pix2Pix实现图像转换

摘要&#xff1a; 记录昇思MindSpore AI框架使用Pix2Pix模型生成图像、判断图像真实概率的原理和实际使用方法、步骤。包括环境准备、下载数据集、数据加载和处理、创建cGAN神经网络生成器和判别器、模型训练、模型推理等。 一、概念 1.Pix2Pix模型 条件生成对抗网络&#x…

IDEA常用技巧荟萃:精通开发利器的艺术

1 概述 在现代软件开发的快节奏环境中,掌握一款高效且功能全面的集成开发环境(IDE)是提升个人和团队生产力的关键。IntelliJ IDEA,作为Java开发者的首选工具之一,不仅提供了丰富的编码辅助功能,还拥有高度可定制的界面和强大的插件生态系统。然而,要充分发挥其潜力,深…

求职成功率的算法,与葫芦娃救爷爷的算法,有哪些相同与不同

1 本节概述 通过在B站百刷葫芦娃这部儿时剧&#xff0c;我觉得可以从中梳理出一些算法&#xff0c;甚至可以用于求职这个场景。所以&#xff0c;大家可以随便问我葫芦娃的一些剧情和感悟&#xff0c;我都可以做一些回答。 2 葫芦娃救爷爷有哪些算法可言&#xff1f; 我们知道…

使用Python实现CartPole游戏

在深度强化学习内容的介绍中&#xff0c;提出了CartPole游戏进行深度强化学习&#xff0c;现在提供一种用Python简单实现Cart Pole游戏的方法。 1. 游戏介绍 CartPole 游戏是一个经典的强化学习问题&#xff0c;其中有一个小车&#xff08;cart&#xff09;和一个杆&#xff…

Apache Seata tcc 模块源码分析

本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 一 .导读 spring 模块分析中讲到&#xff0c;Seata 的 spring 模块会对涉及到分布式业务的 b…

进程控制-wait和waitpid进程回收

wait 阻塞函数 函数作用&#xff1a; 1. 阻塞并等待子进程退出 2. 回收子进程残留资源 3. 获取子进程结束状态&#xff08;退出原因&#xff09; pid_t wait(int *wstatus); 返回值&#xff1a; ‐1 : 回收失败&#xff0c;已经没有子进程了 >0 : 回收子进程对应的…

《linux系统内核设计与实现》-实现最简单的字符设备驱动

开发linux内核驱动需要以下4个步骤&#xff1a; 1 编写hello驱动代码 驱动代码如下 helloDev.c&#xff0c;这是一个最小、最简单的驱动&#xff0c;去掉了其他的不相干代码&#xff0c;尽量让大家能了解驱动本身。 #include <linux/module.h> #include <linux/mod…