基于matlab统计Excel文件一列数据中每个数字出现的频次和频率

一、需求描述

如上表所示,在excel文件中,有一列数,统计出该列数中,每个数出现的次数和频率。最后,将统计结果输出到新的excel文件中。

二、程序讲解

第一步:选择excel文件;

Matlab 复制代码
[Filename, Pathname]  = uigetfile('*.xls', '选择所用的雷达数据');   % 获取文件名和路径根据情况,更改为现有的excel后缀名
filePath=[Pathname  Filename];                                     % 存储文件路径

第二步:读取excel文件中的一列数据;

Matlab 复制代码
data = xlsread(filePath);

第三步统计出现的数字次数;

Matlab 复制代码
[counts, edges] = histcounts(data);                   % counts 统计出现的数字次数

第四步:计算数字出现的频率;

Matlab 复制代码
frequencies = counts / length(data);                 % 计算数字出现的频率

第五步:汇总结果。

Matlab 复制代码
values = (edges(1:end-1) + edges(2:end)) / 2;  % 数据数值出现区间
result = [values; counts;frequencies]';                % 汇总统计结果

第六步:创建存储excel文件的文件夹;

Matlab 复制代码
folder='ExcelFiles';       % 文件夹名称
if exist(folder,'dir')==0 % 判断站点文件夹是否已经存在
    mkdir(folder);        % 不存在,则创建该文件夹
end
Datestr=['.\ExcelFiles\','数据统计结果.xls'];  % 存储汇总统计结果的路径及文件名

第七步:输入表头;

Matlab 复制代码
T1 =table({'原数据'},{'出现频次'},{'出现频率'});   % 表头名称
writetable(T1,Datestr,'Sheet','1','Range','A1:C1','WriteVariableNames', false);  % 写入表头

第八步:输入统计数据。

Matlab 复制代码
T2 = table(result);  % 统计结果
RangeNum=['A2:C',num2str(length(data)+1)];      % 确定数据写入区域
writetable(T2,Datestr,'Sheet','1','Range',RangeNum, 'WriteVariableNames', false); % 写入数据

三、所有程序

Matlab 复制代码
clear all; close all; clc;

%% 选取excel文件
[Filename, Pathname]  = uigetfile('*.xls', '选择所用的雷达数据');   % 获取文件名和路径根据情况,更改为现有的excel后缀名
filePath=[Pathname  Filename];                                     % 存储文件路径

data = xlsread(filePath);

[counts, edges] = histcounts(data);                   % counts 统计出现的数字次数
frequencies = counts / length(data);                 % 计算数字出现的频率
values = (edges(1:end-1) + edges(2:end)) / 2;  % 数据数值出现区间
result = [values; counts;frequencies]';                % 汇总统计结果

%% 将统计结果存储到excel文件中
folder='ExcelFiles';       % 文件夹名称
if exist(folder,'dir')==0 % 判断站点文件夹是否已经存在
    mkdir(folder);        % 不存在,则创建该文件夹
end
Datestr=['.\ExcelFiles\','数据统计结果.xls'];  % 存储汇总统计结果的路径及文件名


% 输入表头
T1 =table({'原数据'},{'出现频次'},{'出现频率'});   % 表头名称
writetable(T1,Datestr,'Sheet','1','Range','A1:C1','WriteVariableNames', false);  % 写入表头
% 输入统计数据
T2 = table(result);  % 统计结果
RangeNum=['A2:C',num2str(length(data)+1)];      % 确定数据写入区域
writetable(T2,Datestr,'Sheet','1','Range',RangeNum, 'WriteVariableNames', false); % 写入数据

运行后,输出的结果,如下表所示:

相关推荐
桃源学社(接毕设)10 分钟前
基于MATLAB的运动模糊图像修复方法研究(LW+源码+讲解+部署)
图像处理·深度学习·计算机视觉·matlab·毕业设计·图像滤波去噪
揭老师高效办公16 小时前
在Excel和WPS表格中拼接同行列对称的不连续数据
excel·wps表格
用户03321266636718 小时前
Java 设置 Excel 行高列宽:告别手动调整,拥抱自动化高效!
java·excel
Evand J1 天前
【MATLAB例程】水下机器人长基线(LBL)定位,用于三维轨迹,使用EKF滤波,融合LBL和IMU,4个锚点(长基线基站数=4),附下载链接
开发语言·matlab·机器人
专注VB编程开发20年1 天前
.NET组件读取压缩包中的内存数据电子表格XLSX文件和图片,不需要解压
linux·服务器·windows·c#·.net·excel·zip
菌王1 天前
EXCEL自动调整列宽适应A4 A3 A2
excel
Aiah.2 天前
数字图像处理(一)
开发语言·计算机视觉·matlab·数字图像处理
专注VB编程开发20年2 天前
对excel xlsx文件格式当成压缩包ZIP添加新的目录和文件后,OpenXml、NPOI、EPPlus、Spire.Office组件还能读出来吗
数据库·c#·excel
躺平都躺不明白2 天前
数学建模-线性规划(LP)
数学建模·matlab
用户0332126663672 天前
Java 将 CSV 转换为 Excel:告别繁琐,拥抱高效数据处理
java·excel