Matlab 数据处理与可视化的多元拓展应用(具体代码分析)
一、代码整体功能概述:
该代码主要实现了以下几个功能:
- 从文件(
part1.txt
)中读取数据,并提取第二列数据,将其存储在originalColumnData
中。 - 对原始数据进行可视化,包括绘制置零前数据的折线图和直方图,并设置相应的图形属性(如标题、坐标轴标签、颜色、网格线等)。
- 对直方图进行从右往左的频数累加操作,找到满足一定累计频数(这里是 60000)的阈值,并将小于等于该阈值的数据置零,得到
columnData
。 - 对置零后的数据再次进行可视化,绘制其折线图和直方图,同样设置相应的图形属性。
- 最后将置零后的数据存储为 CSV 文件(
part1res_50000_2.csv
),并使用drawnow
强制更新图形窗口,确保图形及时显示。
二、代码详细解释:
- 数据读取:
data = dlmread('part1.txt','', 1, 0);
% 提取第二列数据
originalColumnData = -data(:, 2);
dlmread
函数用于从文本文件part1.txt
中读取数据。第三个参数1
表示从文件的第二行开始读取(因为 Matlab 中索引从 1 开始),第四个参数0
表示从第一列开始读取。data(:, 2)
表示提取data
矩阵的第二列数据,前面的-
表示对第二列数据取负。
- 设置直方图参数:
nBins = 100;
nBins
定义了直方图的区间数量,这里设置为 100。可以根据数据的分布情况和期望的展示效果进行调整。
- 绘制置零前数据的折线图(第一个子图):
subplot(2, 2, 1);
dataIndex = 1:length(originalColumnData);
plot(dataIndex, originalColumnData);
title('置零前数据折线图');
xlabel('数据点序号');
ylabel('数值');
xlim([1, length(originalColumnData)]);
ylim([min(originalColumnData), max(originalColumnData)]);
grid on;
subplot(2, 2, 1)
表示将当前绘图区域划分为 2 行 2 列,并选择第一个子图进行绘制。dataIndex
是一个与originalColumnData
长度相同的向量,用于作为x
轴的坐标,这里使用数据点的序号。plot
函数绘制originalColumnData
随dataIndex
变化的折线图。title
、xlabel
和ylabel
分别设置图的标题和坐标轴标签。xlim
和ylim
用于设置x
轴和y
轴的范围,确保能完整显示数据范围。grid on
显示网格线,有助于观察数据趋势。
- 绘制置零前数据的直方图(第二个子图):
subplot(2, 2, 2);
h1 = histogram(originalColumnData, nBins);
h1.FaceColor = [0.5, 0.5, 0.8];
h1.EdgeColor = 'black';
histogram
函数绘制originalColumnData
的直方图,使用nBins
个区间。h1.FaceColor
和h1.EdgeColor
分别设置直方图的填充颜色和边框颜色。
- 从右往左累加直方图频数找到阈值:
binEdges = h1.BinEdges;
binCounts = h1.Values;
cumulativeCount = 0;
targetCount = 60000;
n = numel(binCounts);
for i = n : -1 : 1cumulativeCount = cumulativeCount + binCounts(i);if cumulativeCount >= targetCountthreshold=binEdges(i + 1);break;end
end
columnData = originalColumnData;
columnData(columnData <= threshold) = 0;
h1.BinEdges
包含了直方图每个区间的边界值,h1.Values
存储了每个区间的频数。- 从右往左对
binCounts
进行累加,当累加频数达到targetCount
(这里是 60000)时,找到对应的binEdges
作为阈值。 - 最后将
originalColumnData
中小于等于该阈值的数据置零,得到columnData
。
- 绘制置零后数据的折线图(第三个子图):
subplot(2, 2, 3);
dataIndex = 1:length(columnData);
plot(dataIndex, columnData);
title('置零后数据折线图');
xlabel('数据点序号');
ylabel('数值');
xlim([1, length(columnData)]);
ylim([min(columnData), max(columnData)]);
grid on;
- 与绘制置零前数据的折线图类似,只是使用的是置零后的数据
columnData
。
- 绘制置零后数据的直方图(第四个子图):
subplot(2, 2, 4);
h2 = histogram(columnData, nBins);
h2.FaceColor = [0.5, 0.5, 0.8];
h2.EdgeColor = 'black';
title('置零后数据直方图');
xlabel('数值');
ylabel('频数');
xlim([min(columnData), max(columnData)]);
grid on;
- 与绘制置零前数据的直方图类似,只是使用的是置零后的数据
columnData
。
- 存储置零后的数据并显示图形:
outputFileName = 'part1res_50000_2.csv';
csvwrite(outputFileName, columnData);
drawnow;
csvwrite
函数将columnData
存储为 CSV 文件,文件名为outputFileName
。drawnow
强制 Matlab 立即更新图形窗口,使图形能够及时显示。
三、具体延申应用
1. 基于时间序列数据的趋势预测与异常检测
- 趋势预测:
- 若原始数据
originalColumnData
是按时间顺序采集的时间序列数据(例如每日的股票价格、每月的销售额等),可以使用 ARIMA(自回归积分滑动平均)模型进行趋势预测。首先,需确保数据是平稳的,若不平稳,可通过差分等操作使其平稳。使用autocorr
和parcorr
函数来分析自相关和偏自相关函数,以辅助确定 ARIMA 模型的参数p
(自回归阶数)、d
(差分阶数)和q
(滑动平均阶数)。 - 假设经过分析确定合适的参数为
p = 2
,d = 1
,q = 1
,利用arima
函数构建模型:
- 若原始数据
model = arima('ARIMA',[2, 1, 1]);
fitModel = estimate(model, originalColumnData);
- 然后,使用
forecast
函数对未来一段时间的数据进行预测,例如预测接下来 10 个时间点的数据:
numFuturePoints = 10;
[forecastedData, ~, forecastCI] = forecast(fitModel, numFuturePoints, 'Y0', originalColumnData);
- 将预测结果可视化,在原数据折线图基础上添加预测数据的折线图,用不同颜色区分,以便直观对比:
subplot(2, 2, 1);
plot(dataIndex, originalColumnData);
hold on;
futureIndex = dataIndex(end) + (1:numFuturePoints);
plot(futureIndex, forecastedData, 'r');
hold off;
title('时间序列数据及预测趋势');
xlabel('时间点');
ylabel('数值');
legend('原始数据', '预测数据');
- 异常检测:
- 对于时间序列数据,可结合滑动窗口和统计方法来检测异常值。定义一个滑动窗口大小,例如窗口大小为 20。
- 在每个窗口内,计算数据的均值
windowMean
和标准差windowStd
:
windowSize = 20;
for i = 1:length(originalColumnData) - windowSize + 1windowData = originalColumnData(i:i + windowSize - 1);windowMean(i) = mean(windowData);windowStd(i) = std(windowData);
end
- 设定一个异常阈值,通常为均值加上几倍的标准差(例如 3 倍),判断每个数据点是否为异常值:
threshold = 3;
anomalyIndex = false(size(originalColumnData));
for i = 1:length(originalColumnData)if i < windowSizecurrentWindowMean = mean(originalColumnData(1:i));currentWindowStd = std(originalColumnData(1:i));elsecurrentWindowMean = windowMean(i - windowSize + 1);currentWindowStd = windowStd(i - windowSize + 1);endif abs(originalColumnData(i) - currentWindowMean) > threshold * currentWindowStdanomalyIndex(i) = true;end
end
- 在折线图中将异常值用特殊标记(如红色星号)突出显示:
subplot(2, 2, 1);
plot(dataIndex, originalColumnData);
hold on;
plot(dataIndex(anomalyIndex), originalColumnData(anomalyIndex), 'r*');
hold off;
title('时间序列数据及异常检测');
xlabel('时间点');
ylabel('数值');
2. 多组实验数据对比与分析
- 假设进行了多组不同条件下的实验,每组实验得到的数据都存储在单独的文件中(如
experiment1.txt
,experiment2.txt
等),现在需要对这些组数据进行综合对比分析。 - 首先,使用循环读取多组数据文件:
numExperiments = 3; % 假设有 3 组实验数据
allData = cell(numExperiments, 1);
for i = 1:numExperimentsdata = dlmread(['experiment', num2str(i), '.txt'], '', 1, 0);originalColumnData = -data(:, 2);allData{i} = originalColumnData;
end
- 计算每组数据的基本统计量,如均值、中位数、标准差等,并绘制统计图表进行对比:
stats = cell(numExperiments, 1);
for i = 1:numExperimentsstats{i}.mean = mean(allData{i});stats{i}.median = median(allData{i});stats{i}.std = std(allData{i});
end
subplot(2, 2, 1);
bar(1:numExperiments, [stats{:}.mean]);
title('多组实验数据均值对比');
xlabel('实验组别');
ylabel('均值');
subplot(2, 2, 2);
bar(1:numExperiments, [stats{:}.median]);
title('多组实验数据中位数对比');
xlabel('实验组别');
ylabel('中位数');
subplot(2, 2, 3);
bar(1:numExperiments, [stats{:}.std]);
title('多组实验数据标准差对比');
xlabel('实验组别');
ylabel('标准差');
- 进行假设检验,判断不同组数据之间是否存在显著差异。例如,使用
ttest2
函数进行两组数据之间的独立样本 t 检验,比较第一组和第二组数据是否来自具有相同均值的总体:
[h, p, ci, stats] = ttest2(allData{1}, allData{2});
if h == 1disp('第一组和第二组数据存在显著差异');
elsedisp('第一组和第二组数据无显著差异');
end
- 还可以对多组数据进行可视化叠加,将每组数据的折线图绘制在同一坐标轴上,使用不同颜色或线型 加以区分,以便直观观察数据的分布和差异:
subplot(2, 2, 4);
for i = 1:numExperimentsplot(1:length(allData{i}), allData{i}, ['Color', num2str(i / numExperiments), '-']);hold on;
end
hold off;
title('多组实验数据折线图对比');
xlabel('数据点序号');
ylabel('数值');
legend({'实验 1', '实验 2', '实验 3'});
3. 结合机器学习算法进行数据分类与预测
- 以支持向量机(SVM)为例,对数据进行分类任务。假设
originalColumnData
是特征向量,并且有对应的类别标签存储在另一个向量labels
中(例如,标签为 1 和 -1 代表两类不同的样本)。 - 首先,划分训练集和测试集,通常按照一定比例(如 80% 训练,20% 测试)随机抽取:
trainRatio = 0.8;
numSamples = length(originalColumnData);
trainIndex = randperm(numSamples, floor(trainRatio * numSamples));
trainData = originalColumnData(trainIndex);
trainLabels = labels(trainIndex);
testData = originalColumnData(setdiff(1:numSamples, trainIndex));
testLabels = labels(setdiff(1:numSamples, trainIndex));
- 使用
fitcsvm
函数训练 SVM 模型:
svmModel = fitcsvm(trainData, trainLabels);
- 对测试集进行预测,并计算预测准确率:
predictedLabels = predict(svmModel, testData);
accuracy = sum(predictedLabels == testLabels) / length(testLabels);
disp(['SVM 模型预测准确率:', num2str(accuracy)]);
- 可视化分类结果,对于二维特征数据,可以绘制散点图,用不同颜色表示不同的真实类别,同时用标记(如圆圈、星号等)表示预测类别,以便直观查看分类的准确性:
subplot(2, 2, 1);
scatter(testData(:, 1), testData(:, 2), 50, testLabels, 'filled');
hold on;
scatter(testData(:, 1), testData(:, 2), 30, predictedLabels, 'x');
hold off;
title('SVM 分类结果可视化');
xlabel('特征 1');
ylabel('特征 2');
legend('真实类别', '预测类别');
- 还可以尝试不同的核函数(如线性核、高斯核等)和参数调整,观察对分类结果的影响,通过多次试验找到最优的模型配置:
svmModelLinear = fitcsvm(trainData, trainLabels, 'KernelFunction', 'linear');
svmModelGaussian = fitcsvm(trainData, trainLabels, 'KernelFunction', 'rbf', 'KernelScale', 2);
% 分别对不同模型进行测试和评估,与上述过程类似
总结:
本文围绕一段给定的 Matlab 代码展开深入探讨,该代码涵盖了数据读取、可视化(折线图与直方图绘制)、数据处理(依据直方图频数置零)以及结果存储与图形显示等功能。在延伸应用方面:
- 数据来源与格式上,不仅可用
dlmread
读文本,还能用readtable
读 CSV、xlsread
读 Excel、fread
处理二进制,以适应多样的数据获取需求。 - 数据处理逻辑多变,能依均值、标准差筛选,或借助
find
按条件查找数据,还可结合峰度、偏度等统计信息深入分析数据分布特征。 - 可视化优化包含添加图例对比数据、用散点图替代折线图、绘制三维图形展现二维数据全貌,还能制作动画呈现数据动态变化、进行交互式操作(如鼠标选阈值、滑块调参数),并导出高质量图形用于多场景。
- 特殊应用领域广泛,在信号处理里做傅里叶变换剖析频率成分、用
fitdist
拟合概率分布、以boxplot
观察数据分布异常,还能处理图像(滤波、边缘检测、阈值分割)、文本(词频统计、相似度计算、分类)、地理空间(绘图、插值)、物联网(时序分析、异常检测、数据融合)数据,并且兼顾大数据分块处理、数据加密解密、跨平台交互共享、VR/AR 场景构建、动态交互故事板制作以及数据质量评估清洗等诸多任务。同时,针对时间序列数据能预测趋势与检测异常,多组实验数据可对比分析,结合机器学习算法(如 SVM)能实现分类预测,充分展现了 Matlab 在数据处理全流程各环节强大且丰富的拓展能力。
相关文章:
Matlab 数据处理与可视化的多元拓展应用(具体代码分析)
一、代码整体功能概述: 该代码主要实现了以下几个功能: 从文件(part1.txt)中读取数据,并提取第二列数据,将其存储在 originalColumnData 中。对原始数据进行可视化,包括绘制置零前数据的折线图…...
小程序与内嵌网页的数据通信
小程序与内嵌网页的数据通信 前言 微信小程序提供了web-view组件,允许开发者在小程序中嵌入网页。然而,由于小程序和网页运行在不同的环境中,它们之间的通信就需要依赖特定的机制来实现。然而我们日常的需求中,很多的时候都涉及…...
【学习笔记】数据结构(十一)
外部排序 文章目录 外部排序11.1 外存信息的存取11.2 外部排序的方法11.3 多路平衡归并的实现 - 增加k11.4 置换-选择排序 - 减少m11.5 最佳归并树 外部排序 指的是大文件的排序,即待排序的记录存储在外存储器 上,在排序过程中需进行多次的内、外存之间的…...
【Logstash03】企业级日志分析系统ELK之Logstash 过滤 Filter 插件
Logstash 过滤 Filter 插件 数据从源传输到存储库的过程中,Logstash 过滤器能够解析各个事件,识别已命名的字段以构建结构, 并将它们转换成通用格式,以便进行更强大的分析和实现商业价值。 Logstash 能够动态地转换和解析数据&a…...
深度学习模型部署——基于Onnx Runtime的深度学习模型CPU与GPU部署(C++实现)
1.概述 许多机器学习和深度学习模型都是在基于 Python 的框架中开发和训练的,例如 PyTorch 和 TensorFlow 等。但是,当需要将这些训练好模型部署到生产环境中时,通常会希望将模型集成到生产流程中,而这些流程大多是用 C 编写的&a…...
Selenium 的四种等待方式及使用场景
Selenium 的四种等待方式及使用场景 隐式等待(Implicit Wait)显式等待(Explicit Wait)自定义等待(Custom Wait)固定等待(Sleep) 1. 隐式等待 定义: 隐式等待是为 WebD…...
攻防世界 ics-07
点击之后发现有个项目管理能进,点进去,点击看到源码,如下三段 <?php session_start(); if (!isset($_GET[page])) { show_source(__FILE__); die(); } if (isset($_GET[page]) && $_GET[page] ! index.php) { include(flag.php);…...
一文读懂「LoRA」:大型语言模型的低秩适应
LoRA: Low-Rank Adaptation of Large Language Models 前言 LoRA作为大模型的微调框架十分实用,在LoRA出现以前本人都是通过手动修改参数、优化器或者层数来“炼丹”的,具有极大的盲目性,但是LoRA技术能够快速微调参数,如果LoRA…...
新车月交付突破2万辆!小鹏汽车“激活”智驾之困待解
首次突破月交付2万辆规模的小鹏汽车,稳吗? 本周,高工智能汽车研究院发布的最新监测数据显示,2024年11月,小鹏汽车在国内市场(不含出口)交付量(上险口径,下同)…...
dockerfile 中 #(nop)
在 Dockerfile 中,#(nop) 通常出现在 docker history 命令的输出中。以下是对它的详细解释: 背景 当你使用 docker history <image_name> 命令查看 Docker 镜像的构建历史时,你可能会看到 #(nop) 这样的标记。这是因为 Docker 镜像由…...
升级 Spring Boot 3 配置讲解 —— 为何 SpringBoot3 淘汰了 JDK8?
学会这款 🔥全新设计的 Java 脚手架 ,从此面试不再怕! 随着 Spring Boot 3 的发布,许多开发者发现了一个重要的变化:Spring Boot 3 不再支持 JDK 8。这一变化引发了不少讨论,尤其是对于那些仍然在使用 JDK …...
IT面试求职系列主题-人工智能(一)
想成功求职,必要的IT技能一样不能少,再从人工智能基础知识来一波吧。 1)您对人工智能的理解是什么? 人工智能是计算机科学技术,强调创造能够模仿人类行为的智能机器。这里智能机器可以定义为能够像人一样行动、像人一…...
JVM 优化指南
JVM 优化指南 1. JVM 参数配置 1.1 基础参数配置 设置堆内存大小 -Xms2048m -Xmx2048m 设置新生代大小 -Xmn1024m 设置元空间大小 -XX:MetaspaceSize256m -XX:MaxMetaspaceSize256m 设置线程栈大小 -Xss512k1.2 垃圾回收器配置 使用 G1 垃圾回收器 -XX:UseG1GC 设置期望停顿…...
windows下编写的shell脚本在Linux下执行有问题解决方法
前言: 这个问题在实际工作中经常会遇到(非语法错误),脚本来源有些是自己在windows系统编写的、有些是从别人那里copy来的,还有些原本是好的被别人拿到windows下修改了一些内容,总之各种场景,但是如果是一个内容比较多的…...
使用 SQL 和表格数据进行问答和 RAG(6)—将指定目录下的 CSV 或 Excel 文件导入 SQLite 数据库
将指定目录下的 CSV 或 Excel 文件导入 SQLite 数据库。以下是详细代码逻辑: 1. 类结构 该类包含三个主要方法: _prepare_db:负责将文件夹中的 CSV 和 XLSX 文件转换为 SQL 表。_validate_db:用于验证 SQL 数据库中创建的表是否…...
【算法】算法大纲
这篇文章介绍计算机算法的各个思维模式。 包括 计数原理、数组、树型结构、链表递归栈、查找排序、管窥算法、图论、贪心法和动态规划、以及概率论:概率分治和机器学习。没有办法逐个说明,算法本身错综复杂,不同的算法对应着不同的实用场景,也需要根据具体情况设计与调整。…...
vue(2,3), react (16及以上)开发者工具资源
在前端开发的广阔领域中,Vue.js 和 React.js 作为两大主流框架,各自拥有庞大的用户群体和丰富的生态系统。为了帮助开发者更高效地进行调试和开发,Vue Devtools 和 React 开发者工具应运而生,成为这两个框架不可或缺的辅助工具。本…...
系统编程(网络,文件基础)
网络链接 虚拟机和主机之间网络连接的主要模式有三种,分别是桥接模式(Bridged)、网络地址转换模式(NAT)以及主机模式(Host-Only)。以下是这三种模式的详细解释: 一、桥接模式&…...
重温设计模式--13、策略模式
策略模式介绍 文章目录 策略模式介绍C 代码示例 策略模式是一种行为设计模式,它允许在运行时选择算法的行为。该模式将算法的定义和使用分离开来,使得算法可以独立于使用它的客户端而变化,提高了代码的灵活性和可维护性。 其主要包含以下几个…...
数字IC设计高频面试题
在数字IC设计领域,面试是评估候选人技术能力和问题解决能力的重要环节。数字IC设计的复杂性和要求在不断提高。面试官通常会提出一系列面试题,以考察应聘者在数字设计、验证、时钟管理、功耗优化等方面的专业知识和实践经验。 这些题目不仅涉及理论知识…...
C#异步多线程——ThreadPool线程池
C#实现异步多线程的方式有多种,以下总结的是ThreadPool的用法。 线程池的特点 线程池受CLR管理,线程的生命周期,任务调度等细节都不需要我们操心了,我们只需要专注于任务实现,使用ThreadPool提供的静态方法把我们的任…...
矩母函数(MGF)
矩母函数(MGF)简介 矩母函数(Moment Generating Function,MGF)是概率统计中描述随机变量分布特征的重要工具。MGF的主要用途是通过导数来计算随机变量的矩(比如均值、方差等),同时它…...
【技术支持】安卓无线adb调试连接方式
Android 10 及更低版本,需要借助 USB 手机和电脑需连接在同一 WiFi 下;手机开启开发者选项和 USB 调试模式,并通过 USB 连接电脑(即adb devices可以查看到手机);设置手机的监听adb tcpip 5555;拔掉 USB 线…...
OpenCV相机标定与3D重建(46)将三维空间中的点投影到二维图像平面上函数projectPoints()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 将3D点投影到图像平面上。 cv::projectPoints 是 OpenCV 库中的一个函数,用于将三维空间中的点投影到二维图像平面上。这个过程涉及到…...
Android wifi常见问题及分析
参考 Android Network/WiFi 那些事儿 前言 本文将讨论几个有意思的网络问题,同时介绍 Android 上常见WiFi 问题的分析思路。 网络基础Q & A 一. 网络分层缘由 分层想必大家很熟悉,是否想过为何需要这样分层? 网上大多都是介绍每一层…...
如何用 ESP32-CAM 做一个实时视频流服务器
文章目录 ESP32-CAM 概述ESP32-S 处理器内存Camera 模块MicroSD 卡槽天线板载 LED 和闪光灯其他数据手册和原理图ESP32-CAM 功耗 ESP32-CAM 引脚参考引脚排列GPIO 引脚哪些 GPIO 可以安全使用?GPIO 0 引脚MicroSD 卡引脚 ESP32-CAM 的烧录方式使用 ESP32-CAM-MB 编程…...
编译与汇编
本文来自《程序员的自我修养》 编译过程是把预处理完的文件进行一系列词法分析,语法分析,语义分析以及优化后生成相应的汇编文件代码。 现在版本的GCC把预编译和编译两个步骤合并为一个步骤。 gcc -S HelloWorld.c HelloWorld.sint main() {//test/* …...
Linux入门攻坚——43、keepalived入门-1
Linux Cluster(Linux集群的类型):LB、HA、HPC,分别是负载均衡集群、高可用性集群、高性能集群。 LB:lvs,nginx HA:keepalived,heartbeat,corosync,cman HP&am…...
备考蓝桥杯:顺序表相关算法题
目录 询问学号 寄包柜 移动0 颜色分类 合并两个有序数组 物品移动 询问学号 我们的思路:创建一个顺序表存储从1开始依次存放进入教室的学生学号,然后查询 #include <iostream> #include <vector> using namespace std; const int N 2…...
【STM32+QT项目】基于STM32与QT的智慧粮仓环境监测与管理系统设计(完整工程资料源码)
视频演示: 基于STM32与QT的智慧粮仓环境监测与管理系统设计 目录: 目录 视频演示: 目录: 前言:...
Vue3 自定义hook
文章目录 Vue3 自定义hook概述用法 Vue3 自定义hook 概述 Vue3推荐利用Vue的组合式API函数进行代码封装,这种封装方式统称为自定义hook。 用法 定义 hook/countHook.js: import {computed, ref, watch} from "vue";export default (initC…...
【VBA】【EXCEL】将某列内容横向粘贴到指定行
Sub CopyRowToColumn()On Error GoTo ErrorHandler 添加错误处理Application.ScreenUpdating FalseApplication.Calculation xlCalculationManualApplication.EnableEvents False 禁用事件处理Dim lastCol As LongDim lastRow As LongDim i As Long, colCount As LongDim …...
使用Llama 3.1创建合成数据集以调优你的大型语言模型
使用Llama 3.1创建合成数据集以调优你的大型语言模型 在数据驱动的人工智能领域,数据是核心资产。开发高质量数据集既复杂又昂贵,因此很多实验室和开发者选择使用合成数据集。本文将介绍如何利用大型语言模型Llama 3.1 405B创建合成数据集,并…...
【Ubuntu22.04】VMware虚拟机硬盘扩容
1.首先打开虚拟机设置 2.根据需要对硬盘扩展 这边提示我们还需要进入虚拟机在内部分区 3.安装界面化磁盘管理工具 # 安装 sudo apt install gparted# 启动 sudo gparted调整硬盘大小 调整的时候会提示我们硬盘是只读的,因此还要进行操作 新建终端重新挂载文件系…...
初学stm32 --- DMA直接存储器
目录 DMA介绍 STM32F1 DMA框图 DMA处理过程 DMA通道 DMA优先级 DMA相关寄存器介绍 F1 DMA通道x配置寄存器(DMA_CCRx) DMA中断状态寄存器(DMA_ISR) DMA中断标志清除寄存器(DMA_IFCR) DMA通道x传输…...
reactor中的并发
1. reactor中的并发有两种方式 1.1 flatmap,底层是多线程并发处理。在reactor的演讲中,flatmap对于io类型的并发效果较好. flamap有两个参数: int concurrency, int prefetch。分别代表并发的线程数和缓存大小 注意凡是参数中有prefetch的,都…...
HTML - <script>,<noscript>
<script>标签用于在网页插入脚本,<noscript>标签用于指定浏览器不支持脚本时的显示内容。 1.<script> <script>用于加载脚本代码,目前主要是加载 JavaScript 代码。 <script> console.log(hello world); </script&g…...
C#语言的函数实现
C#语言的函数实现 在现代编程语言中,函数(Function)是最基本也是最重要的组成部分之一。函数不仅提高了代码的复用性,还使得程序结构更清晰。C#作为一种多用途的编程语言,函数的知识是程序员必备的基本技能之一。本文…...
JAVA I/O流练习1
往D盘中的JAVA复习文件夹中写数据: 数据改了一下哈: import java.io.*; import java.util.Scanner; public class Test {public static void main(String[] args) throws IOException {String fileName"D:JAVA复习\\grade.txt";FileWriter w…...
HTML——75. 内联框架
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>内联框架</title><style type"text/css">iframe{width: 100%;height: 500px;}</style></head><body><!--iframe元素会创建包含…...
js获取当前浏览器地址,ip,端口号等等
前言: js获取当前浏览器地址,ip,端口号等等 window.location属性查询 具体属性: 1、获取他的ip地址 window.location.hostname 2、获取他的端口号 window.location.port 3、获取他的全路径 window.location.origin 4、获取…...
C++虚函数(八股总结)
什么是虚函数 虚函数是在父类中定义的一种特殊类型的函数,允许子类重写该函数以适应其自身需求。虚函数的调用取决于对象的实际类型,而不是指针或引用类型。通过将函数声明为虚函数,可以使继承层次结构中的每个子类都能够使用其自己的实现&a…...
【每日学点鸿蒙知识】跳转三方地图、getStringSync性能、键盘避让模式等
1、跳转三方地图导航页 类似于Android 跳转到地图APP 导航页面: // 目标地点的经纬度和名称 double destinationLat 36.547901; double destinationLon 104.258354; String destinationName "目的地名称"; // 构建URI Uri uri Uri.parse("…...
【线性代数】通俗理解特征向量与特征值
这一块在线性代数中属于重点且较难理解的内容,下面仅个人学习过程中的体会,错误之处欢迎指出,有更简洁易懂的理解方式也欢迎留言学习。 文章目录 概念计算几何直观理解意义 概念 矩阵本身就是一个线性变换,对一个空间中的向量应用…...
C#设计模式(行为型模式):备忘录模式,时光倒流的魔法
C#设计模式:备忘录模式,时光倒流的魔法 在软件开发中,我们经常会遇到需要保存对象状态,并在未来某个时刻恢复的场景。例如: 撤销操作: 文本编辑器中的撤销功能,游戏中的回退操作。事务回滚&am…...
服务器信息整理:用途、操作系统安装日期、设备序列化、IP、MAC地址、BIOS时间、系统
文章目录 引言I BIOS时间Windows查看BIOS版本安装日期linux查看BIOS时间II 操作系统安装日期LinuxWindowsIII MAC 地址IV 设备序列号Linux 查看主板信息知识扩展Linux常用命令引言 信息内容:重点信息:用途、操作系统安装日期、设备序列化、IP、MAC地址、BIOS时间、系统 Linux…...
用OpenCV实现UVC视频分屏
分屏 OpencvUVC代码验证后话 用OpenCV实现UVC摄像头的视频分屏。 Opencv opencv里有很多视频图像的处理功能。 UVC Usb 视频类,免驱动的。视频流格式有MJPG和YUY2。MJPG是RGB三色通道的。要对三通道进行分屏显示。 代码 import cv2 import numpy as np video …...
【C#学习】基类的静态变量 派生类会如何处理
来源GPT,仅记录学习 在C#中,子类继承父类的public static变量时,父类的静态变量对所有类(包括子类)都是共享的。子类并不会重新创建父类静态变量,而是共享父类的静态成员。 具体行为: 静态变量…...
Unity3D仿星露谷物语开发19之库存栏丢弃及交互道具
1、目标 从库存栏中把道具拖到游戏场景中,库存栏中道具数相应做减法或者删除道具。同时在库存栏中可以交换两个道具的位置。 2、UIInventorySlot设置Raycast属性 在UIInventorySlot中,我们只希望最外层的UIInventorySlot响应Raycast,他下面…...
SQL进阶实战技巧:如何利用 Oracle SQL计算线性回归置信区间?
目录 1 置信区间计算方法 步骤1:计算回归系数 步骤2:计算标准误差 步骤3:计算置信区间 2 数据准备 <...