首页 > 其他分享 >21-B题 学习笔记

21-B题 学习笔记

时间:2024-01-24 18:15:53浏览次数:36  
标签:... end 21 column double 50 笔记 学习 1.68

这题今天没太做明白,明天继续做,下面是今天写的部分代码。

%导入
% 设置导入选项并导入数据
opts2 = spreadsheetImportOptions("NumVariables", 10);

% 指定工作表和范围
opts2.Sheet = "性能数据表";
opts2.DataRange = "A2:J115";

% 指定列名称和类型
opts2.VariableNames = ["x_______", "x_____", "x__", "x________", "x________1", "C4________", "x________2", "x___4_12_________", "x_________________", "x____________"];
opts2.VariableTypes = ["char", "char", "double", "double", "double", "double", "double", "double", "double", "double"];

% 指定变量属性
opts2 = setvaropts(opts2, ["x_______", "x_____"], "WhitespaceRule", "preserve");
opts2 = setvaropts(opts2, ["x_______", "x_____"], "EmptyFieldRule", "auto");

% 导入数据
Maintable = readtable("/Users/Kai/Desktop/B 2/附件1.xlsx", opts2, "UseExcel", false);

% 转换为输出类型
Maintable = table2cell(Maintable);
numIdx = cellfun(@(x) ~isnan(str2double(x)), Maintable);
Maintable(numIdx) = cellfun(@(x) {str2double(x)}, Maintable(numIdx));

% 清除临时变量
clear numIdx

% 清除临时变量
clear opts2

% 显示结果
%Maintable

index=["温度","乙醇转化率(%)","乙烯选择性(%)","C4烯烃选择性(%)","乙醛选择性(%)", ...
"碳数为4-12脂肪醇选择性(%)","甲基苯甲醛和甲基苯甲醇选择性(%)","其他生成物的选择性(%)"];
catalyst=strings(21,1);
table=cell(21,1);

p=1;
for i=1:21
catalyst(i,1)=Maintable{p,2};
lp=p;
p=p+1;
while(p<=114&&isempty(Maintable{p,2}))p=p+1;end
B=zeros(p-lp,8);
for j=lp:p-1
for k=3:10
B(j-lp+1,k-2)=Maintable{j,k};
end
end
table{i}=B;
end
%导入end

%程序
totaldata=1;
p1=ones(21,4);p2=p1;
needdraw=false;
for i=1:21
%提取数据
A=table{i};
T=A(:,1);
S=size(T);
tno=S(1); %本组数据所含温度数
%提取end

%绘制原始数据
if(needdraw)
for j=2:8
data=A(:,j);
hold on;
scatter(T,data,"LineWidth",2,"Marker",'o');
axis auto;
title("第"+num2str(i)+"组数据的图像");
xlabel('温度');
ylabel('选择性(%)')
xticks(T(1):25:T(tno));
yticks(0:10:100);
axis([T(1),T(tno),0,100]);
end
%绘图最后处理
legend(index(2:8)+"(原始数据)");%绘制图例
hold off;
%绘图最后处理end
end
%绘制原始数据end
C2H6O=A(:,2); %乙醇转化率
C4=A(:,4); %C4选择性
getC4=(C2H6O/100).(C4/100)100; %C4收率
p1(1:2,i)=polyfit(T,C2H6O,1);
p2(1:2,i)=polyfit(T,C4,1);
p3(1:2,i)=polyfit(T,getC4,1);
end
p1(1,:)
sum(p1(1,:))/21
p2(1,:)
sum(p2(1,:))/21
p3(1,:)
sum(p3(1,:))/21
%程序end

%合理认为温度越高、乙醇转化率和C4烯烃选择性越大,收率也越大

%取出所有乙醇浓度1.68ml/min的数据
cata=[200 200 1 1.68; ...
200 200 2 1.68; ...
200 200 1 0.9; ...
200 200 0.5 1.68; ...
200 200 2 0.3; ...
200 200 5 1.68; ...
50 50 1 0.3; ...
50 50 1 0.9; ...
50 50 1 2.1; ...
50 50 5 2.1; ...
50 90 1 1.68; ...
50 50 1 1.68; ...
67 33 1 1.68; ...
33 67 1 1.68; ...
50 50 1 1.68; ...
100 100 1 1.68; ...
10 10 1 1.68; ...
25 25 1 1.68; ...
50 50 1 2.1; ...
75 75 1 1.68; ...
100 100 1 0.9; ...
];
chooseindex=[1 2 4 6 11 12 13 14 15 16 17 18 20];
cata(:,1:2)=[cata(:,1)./cata(:,2),cata(:,3)];cata(:,3:4)=[];
choosecata=cata(chooseindex,1:2);
choosep1=p1(:,chooseindex)';
choosep2=p2(:,chooseindex)';

catax=choosecata(:,1);
catay=choosecata(:,2);
choosep1k=choosep1(:,1);
choosep1b=choosep1(:,2);
choosep2k=choosep2(:,1);
choosep2b=choosep2(:,2);

finaldata1=[catax catay choosep1k]
finaldata2=[catax catay choosep1b]
finaldata3=[catax catay choosep2k]
finaldata4=[catax catay choosep2b]

% trainingData=finaldata
%
% inputTable = array2table(trainingData, 'VariableNames', {'column_1', 'column_2', 'column_3', 'column_4', 'column_5'});
%
% predictorNames = {'column_1', 'column_2', 'column_3'};
% predictors = inputTable(:, predictorNames);
% response = inputTable.column_4;
% isCategoricalPredictor = [false, false, false];
%
% % 训练回归模型
% % 以下代码指定所有模型选项并训练模型。
% regressionNeuralNetwork = fitrnet(...
% predictors, ...
% response, ...
% 'LayerSizes', [10 10 10], ...
% 'Activations', 'relu', ...
% 'Lambda', 0, ...
% 'IterationLimit', 1000, ...
% 'Standardize', true);
%
% % 使用预测函数创建结果结构体
% predictorExtractionFcn = @(x) array2table(x, 'VariableNames', predictorNames);
% neuralNetworkPredictFcn = @(x) predict(regressionNeuralNetwork, x);
% trainedModel.predictFcn = @(x) neuralNetworkPredictFcn(predictorExtractionFcn(x));
%
% % 向结果结构体中添加字段
% trainedModel.RegressionNeuralNetwork = regressionNeuralNetwork;
% trainedModel.About = '此结构体是从回归学习器 R2023a 导出的训练模型。';
% trainedModel.HowToPredict = sprintf('要对新预测变量列矩阵 X 进行预测,请使用: \n yfit = c.predictFcn(X) \n将 ''c'' 替换为作为此结构体的变量的名称,例如 ''trainedModel''。\n \nX 必须包含正好 3 个列,因为此模型是使用 3 个预测变量进行训练的。\nX 必须仅包含与训练数据具有完全相同的顺序和格式的\n预测变量列。不要包含响应列或未导入 App 的任何列。\n \n有关详细信息,请参阅 How to predict using an exported model。');
%
% % 提取预测变量和响应
% % 以下代码将数据处理为合适的形状以训练模型。
% %
% % 将输入转换为表
% inputTable = array2table(trainingData, 'VariableNames', {'column_1', 'column_2', 'column_3', 'column_4', 'column_5'});
%
% predictorNames = {'column_1', 'column_2', 'column_3'};
% predictors = inputTable(:, predictorNames);
% response = inputTable.column_4;
% isCategoricalPredictor = [false, false, false];
%
% % 执行交叉验证
% partitionedModel = crossval(trainedModel.RegressionNeuralNetwork, 'KFold', 5)
%
% % 计算验证预测
% validationPredictions = kfoldPredict(partitionedModel)
%
% % 计算验证 RMSE
% validationRMSE = sqrt(kfoldLoss(partitionedModel, 'LossFun', 'mse'))
%
% trainedModel.predictFcn
% %neuralNetworkPredictFcn(predictorExtractionFcn(x))

% % 定义拟合函数
% fun = @(coefficients, x) coefficients(1) + coefficients(2)x(:, 1) + coefficients(3)x(:, 2) + coefficients(4)x(:, 3);
%
% % 初始参数估计
% beta1 = [0, 0, 0, 0];
% beta2 = beta1;
% w1=100;w2=10;%有待严谨化
%
% Y1=w1
choosep1(:,1)+w2choosep1(:,2);
% Y2=w1
choosep2(:,1)+w2*choosep2(:,2);
%
% % 拟合非线性回归模型
% model1 = fitnlm(X, Y1, fun, beta1);
% model2 = fitnlm(X, Y1, fun, beta2);
%
% % 获取参数估计值
% coefficients1 = model1.Coefficients;
% coefficients2 = model2.Coefficients;
%
% C1=table2array(coefficients1(:,1))
% C2=table2array(coefficients2(:,1))

clc;clear;close all;
%% 设置导入选项并导入数据
opts = spreadsheetImportOptions("NumVariables", 8);

% 指定工作表和范围
opts.Sheet = "稳定性测试";
opts.DataRange = "A4:H10";

% 指定列名称和类型
opts.VariableNames = ["VarName1", "VarName2", "VarName3", "C4", "VarName5", "VarName6", "VarName7", "VarName8"];
opts.VariableTypes = ["double", "double", "double", "double", "double", "double", "double", "double"];

% 导入数据
table2 = readtable("/Users/Kai/Desktop/B 2/附件2.xlsx", opts, "UseExcel", false);

%% 转换为输出类型
table2 = table2array(table2);

%% 清除临时变量
clear opts

given_T=350;
t=table2(:,1);
index=["温度","乙醇转化率(%)","乙烯选择性(%)","C4烯烃选择性(%)","乙醛选择性(%)", ...
"碳数为4-12脂肪醇选择性(%)","甲基苯甲醛和甲基苯甲醇选择性(%)","其他生成物的选择性(%)"];
S=size(t);
tno=S(1);
hold on;
for j=2:8
data=table2(:,j);
scatter(t,data,"LineWidth",2,"Marker",'o');
end
pol=ones(5,8);
for j=2:8
data=table2(:,j);
pol(1:4,j)=polyfit(t,data,3);
x=20:0.05:280;
y=polyval(pol(1:4,j),x);
plot(x,y,"LineWidth",3);
end
xlabel('时间');
ylabel('百分比');
xticks(linspace(20,280,14));
yticks(0:10:100);
axis([20,300,0,100]);
legend([index(2:8)+"(原始数据)",index(2:8)+"(拟合曲线)"]);%绘制图例
hold off;
pol(1:4,2:8)

标签:...,end,21,column,double,50,笔记,学习,1.68
From: https://www.cnblogs.com/gongkai/p/17985438

相关文章

  • 1.24学习进度
    1.RDD的创建通过并行化集合创建(本地对象转分布式RDD)读取外部数据源(读取文件):textfileapi(可以读取本地数据)2.算子是什么算子:分布式集合对象上的api方法/函数:本地对象的api3.算子的分类   Transformation:转换算子(返回值是rdd)特性:这类算子时lazy、懒加载的,如果没有action算子......
  • What is FFT? FFT学习笔记
    在时间序列、数字信号的数据处理中经常会看到使用FFT作为一段数据中提取频率的手段,但是往往文中没有花大笔墨去解释,仿佛所有人都了解这个概念。FFT(FastFourierTransform)为快速傅里叶变换,是一种高效计算DFT(DiscreteFourierTransform),离散傅里叶变换的方法。在了解FFT之前......
  • P1321 单词覆盖还原
    1.题目单词覆盖还原题目描述一个长度为\(l\)的字符串中被反复贴有boy和girl两单词,后贴上的可能覆盖已贴上的单词(没有被覆盖的用句点表示),最终每个单词至少有一个字符没有被覆盖。问贴有几个boy几个girl?输入格式一行被反复贴有boy和girl两单词的字符串。输出格式......
  • day25 代码随想录算法训练营 216. 组合总和 III
    题目:216.组合总和III我的感悟:还是按照之前的套路来。多了一个参数path_sum应该是有两处剪枝,1处横线剪枝,1处纵向剪枝?或者说1处求和剪枝?1处范围剪枝?【疑问】理解难点:不剪枝的已经模的差不多了,剪枝的再看看 自己听了一遍写的:[未剪枝]classSolution:defcombina......
  • Redis整形溢出漏洞(CVE-2021-32761)及修复脚本
    今天的计划是修复线上的redis漏洞Redis整形溢出漏洞(CVE-2021-32761)及修复脚本目的:修复生产的redis漏洞,主要是整数溢出漏洞,但是过程中发现还有反弹shell漏洞(次要,毕竟需要密码)计划:获取生产的redis版本账号和密码在测试环境搭建反正环境漏洞的研究与证实测试环......
  • Python学习笔记
    一、第一个Python程序1.1软件安装Anaconda:管理不同开发环境(如python3解释器),及它们的各种库(如numpy库)PyCharm:集成开发环境(IDE)1.2HelloWorld打开PyCharm→新建项目→选择项目保存位置、先前配置的环境(方法见Anaconda使用笔记)......
  • 数据库学习笔记(五)—— MySQL 之 瓶颈及优化篇
    MySQL之瓶颈及优化篇数据库瓶颈阶段一:企业刚发展的阶段,最简单,一个应用服务器配一个关系型数据库,每次读写数据库。阶段二:无论是使用MySQL还是Oracle还是别的关系型数据库,数据库通常不会先成为性能瓶颈,通常随着企业规模的扩大,一台应用服务器扛不住上游过来的流量且一台......
  • WinDbg学习二(符号)
    在开始使用WinDbg之前,我们需要设置一下符号。简介符号文件包含大量的数据,比如全局变量,局部变量,源行号,这些数据在运行二进制文件时实际上并不需要,但在调试过程中很有用,比如我们写.net程序时生成的PDB文件。符号可以包括名称、类型(如果适用)、存储地址或寄存器以及任何父符号或子......
  • Kubernetes 学习整理(三)
    k8skubelet(Kubernetesnodeagent):是运行在每个节点上的代理,负责管理该节点上的容器,它从KubernetesMaster接收Pod的描述,并确保节点上运行的容器与描述一致。不能跨节点。kubelet的主要作用是保证节点上的容器按照期望的状态运行。它监控容器的健康状态,执行生命周期......
  • Spring学习
    简单Spring代码1、BeanFactory和FactoryBean和BeanDefinitionBeanDefinition是Bean的定义。BeanFactory是Bean容器顶层接口。FactoryBean是用来创建Bean的,实现此接口的getBean方法可以通过此FactoryBean的名字获得Bean,如果想获得他本身则要转移&。2、容器 简单容器接......