基于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); % 写入数据

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

相关推荐
fie88893 小时前
钢结构件制造车间生产调度实例:MATLAB实现(基于遗传算法)
开发语言·matlab·制造
Excel工作圈6 小时前
凭证助手一键匹配已勾选抵扣发票与全量发票明细
数据库·excel
foundbug9997 小时前
MATLAB中实现信号迭代解卷积功能
开发语言·深度学习·matlab
qq_150841997 小时前
32位的CVI2010基于ExcelReport库无法正常访问64位EXCEL的解决方案
excel
weixin_431822407 小时前
办公自动化:通过字符串相似度算法找出Excel 中的重复数据
excel·零售
寄思~8 小时前
Excel 数据匹配工具 -笔记
笔记·python·学习·excel
fengfuyao98510 小时前
基于Matlab的压缩感知梯度投影重构算法实现方案
算法·matlab·重构
e***985710 小时前
MATLAB高效算法实战:从基础到进阶优化
开发语言·算法·matlab
yong999010 小时前
信号分形维数计算方法与MATLAB实现
开发语言·人工智能·matlab
知乎的哥廷根数学学派12 小时前
基于高阶统计量引导的小波自适应块阈值地震信号降噪算法(MATLAB)
网络·人工智能·pytorch·深度学习·算法·机器学习·matlab