当前位置: 首页 > news >正文

Matlab统计字符串中共有多少种字符以及每种字符出现次数的功能实现(Matlab R2021a)

在做2023年深圳杯B题的时候,需要使用隐写技术(将特定信息嵌入信息载体且不易被察觉,可被广泛地应用于著作权保护、数据附加等领域)将《中华人民共和国著作权法》全篇10314个字符写入图片,首先我想到的是利用霍夫曼编码原理 将字符串进行压缩,这样的话,相同的隐写算法就可以保存更多的信息。所以我需要统计字符串中共有多少种字符以及每种字符出现的次数,其实更优的做法是利用中文语料库进行分词,或直接应用中文词频统计结果进行霍夫曼编码,可以极大压缩所给文档。
下面是统计字符串中共有多少种字符以及每种字符出现的次数的具体实现:

%% 实现逻辑
% 使用unique函数得到不重复的所有单一字符,求长度即为字符串中字符种类数
% 而后使用循环语句和strfind函数逐一判断每种字符在字符串中出现的次数
%% 准备工作
clc;
clear;
AllString=fileread('中华人民共和国著作权法.txt'); %读入字符串,事先存入txt文档中
%% 计算每种字符的数量
characters = unique(AllString);
CharactersNumber=length(characters);
CharactersTimes = zeros(CharactersNumber,1);
for i = 1:length(characters)CharactersTimes(i)=length(strfind(AllString,characters(i)));
end
sprintf('所给字符串一共有%s种字符,每种字符出现的次数请查看变量:CharactersTimes',num2str(CharactersNumber))

如果需要作为函数引用,输入字符串,输出字符串中字符种类数、每种字符出现次数等结果,可参考下述代码

%% 版权声明
% 版权所有 (c) 2023 课补乐科技工作室,作者KeepLearn666,微信公众号KeepLearner
% 本程序知识产权属于作者和工作室。特此免费授予任何单位或个人获得本程序和相关文件副本,不受限制地使用、复制、修改、发布本程序,
% 但不允许以任何形式(包括但不限于:以源代码形式、以二进制形式、以修改后的代码形式)向第三方出售、出租、转让本程序。
% 向外发布时应在显著位置注明来源(微信公众号KeepLearner)。
% 博客:终身学习者的家园 https://keeplearner.blog.csdn.net/
% 联系方式:
% 邮箱:345797571@qq.com
% 微信:KeepLearn666
% 微信公众号:KeepLearnerfunction [CharactersNumber,CharactersTimes]=CharactersTimesCounter(AllString)
%% 计算每种字符的数量
characters = unique(AllString);
CharactersNumber=length(characters);
CharactersTimes = zeros(CharactersNumber,1);
for i = 1:length(characters)CharactersTimes(i)=length(strfind(AllString,characters(i)));
end
end

相关文章:

Matlab统计字符串中共有多少种字符以及每种字符出现次数的功能实现(Matlab R2021a)

在做2023年深圳杯B题的时候,需要使用隐写技术(将特定信息嵌入信息载体且不易被察觉,可被广泛地应用于著作权保护、数据附加等领域)将《中华人民共和国著作权法》全篇10314个字符写入图片,首先我想到的是利用霍夫曼编码…...

HTTPS文件传输

目录 0.https概述1.单钥匙锁2.双钥匙锁 - 防篡改3.双钥匙锁 - 防泄漏4.单双钥匙锁相互配合 0.https概述 HTTPS其实就是HTTP协议加上TLS/SSL,SSL是个加密套件,负责对HTTP的数据进行加密,TLS是SSL的升级版,现在提到HTTPS&#xff0…...

LOL-v2数据集和VE-LOL数据集的区别

LOL-v2数据集和VE-LOL数据集的区别 LOL-v2 LOL-v2数据集[64]包括两个不同的子集,即LOL-v2-real和LOL-v2-synthetic。LOL-v2-real子集是通过改变ISO和曝光时间在真实场景中捕获的,包括689对用于训练和测试的图像。在LOL-v2-synthetic子集中,…...

RabbitMQ(一) - 基本结构、SpringBoot整合RabbitMQ、工作队列、发布订阅、直接、主题交换机模式

RabbitMQ结构 Publisher : 生产者 Queue: 存储消息的容器队列; Consumer:消费者 Connection:消费者与消息服务的TCP连接 Channel:信道,是TCP里面的虚拟连接。例如:电缆相当于TCP,信道是一条独立光纤束&…...

涉及IMU的专业术语

文章目录 零偏维纳过程/布朗运动随机游走航迹推算 零偏 IMU(惯性测量单元)是一种用于测量物体在空间中的加速度和角速度的装置。它通常由加速度计和陀螺仪组成,这些传感器可以帮助确定物体的运动状态和方向。 在IMU中,“零偏”&…...

二维数组对角线判断

二维数组对角线判断 对于两个点(x1, y1)和(x2, y2)。如何判断二者是否在同一条正对角线,反对角线,或者正或反对角线上? 正对角线判断 x2-x1 y2 -y1 证明:任意一点(x1k, y1k),(k…...

数据可视化(六)多个子图及seaborn使用

1.多个子图绘制 #绘制多个子图 #subplot(*args,**kwargs) 每个subplot函数只能绘制一个子图 #subplots(nrows,ncols) #fig_add_subplot(行,列,区域) #绘制子图第一种方式 plt.subp…...

opencv-34 图像平滑处理-双边滤波cv2.bilateralFilter()

双边滤波(BilateralFiltering)是一种图像处理滤波技术,用于平滑图像并同时保留边缘信息。与其他传统的线性滤波方法不同,双边滤波在考虑像素之间的空间距离之外,还考虑了像素之间的灰度值相似性。这使得双边滤波能够有…...

Leetcode 268. Missing Number

Problem Given an array nums containing n distinct numbers in the range [0, n], return the only number in the range that is missing from the array. Algorithm Sum all the numbers as x x x and use n ( n 1 ) 2 − x \frac{n(n1)}{2} - x 2n(n1)​−x. Code …...

MybatisPlus实战笔记

概述 Mybatis支持定制化SQL、存储过程以及高级映射,避免几乎所有的 JDBC 代码和手动设置参数以及获取结果集。可以使用简单的 XML 或注解来配置和映射原生信息,将接口和Java的POJO映射成数据库中的记录。 缺点: SQL工作量很大,尤…...

Android Studio 报错:Failed to create Jar file xxxxx.jar

通过分析,新下载的项目没有project/gradle目录,故通过其他项目复制到当前项目,就解决了该问题。 同时也出现了新的问题 Unable to start the daemon process.The project uses Gradle 4.1 which is incompatible with Java 11 or newer.原因…...

Django实现音乐网站 ⑸

使用Python Django框架制作一个音乐网站, 本篇主要是配置媒体资源设置。 目录 配置介绍 设置媒体资源 创建媒体资源目录 修改settings.py 注册媒体资源路由 总结 配置介绍 静态资源是指项目配置的js/css/image等系统常用文件。对于一些经常变动的资源&#x…...

基于VUE3+Layui从头搭建通用后台管理系统(前端篇)七:工作台界面实现

一、本章内容 本章实现工作台界面相关内容,包括echart框架引入,mock框架引入等,实现工作台界面框架搭建,数据加载。 1. 详细课程地址: 待发布 2. 源码下载地址: 待发布 二、界面预览 三、开发视频 基于VUE3+Layui从头搭建通用后台管理系统合集-工作台界面布局实现 五、…...

前端vue uni-app自定义精美海报生成组件

在当前技术飞速发展的时代,软件开发的复杂度也在不断提高。传统的开发方式往往将一个系统做成整块应用,一个小的改动或者一个小功能的增加都可能引起整体逻辑的修改,从而造成牵一发而动全身的情况。为了解决这个问题,组件化开发逐…...

高通滤波器,低通滤波器

1.高通滤波器是根据像素与邻近像素的亮度差值来提升该像素的亮度。 import cv2 import numpy as np from scipy import ndimagekernel_3_3 np.array([[-1,-1,-1],[-1,8,-1],[-1,-1,-1]]) print(kernel_3_3) kernel_5_5 np.array([[-1,-1,-1,-1,-1],[-1,1,2,1,-1],[-1,2,4,2,-…...

机器学习深度学习——卷积的多输入多输出通道

👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——从全连接层到卷积 📚订阅专栏:机器学习&&深度学习 希望文章对你们有所帮…...

HTML5中Canvas学习笔记:Canvas

目录 一、HTML中Canvas画图strokeStyle 和 fillStyle 的区别是什么? 二、如何设置一幅canvas图中某个颜色透明? 三、H5 canvas中strokeRect参数如果是小数,如何处理? 四、H5 Canvas中如何画圆角矩形框? 一、HTML中…...

Windows安装子系统Linux

Windows安装子系统(Linux ubuntu) 安装条件步骤1.安装WSL命令2.设置Linux用户名和密码3.写个简单的.c程序看看4.如何互传文件 安装条件 Windows 10版本2004及更高的版本才能安装。 步骤 1.安装WSL命令 我们可以使用WSL来安装子系统 Linux ubuntu(默认是这个)。 …...

C 语言的 pow() 函数

作用: Calculates x raised to the power of y. 函数原型: double pow( double x, double y ); Required Header: <math.h> Compatibility: ANSI Return Value pow returns the value of x y x^{y} xy. No error message is printed on overflow or underflow. Paramete…...

socket 基础

Socket是什么呢&#xff1f; ① Socket通常也称作“套接字”&#xff0c;用于描述IP地址和端口&#xff0c;是一个通信链的句柄。应用程序通常通过“套接字”向网络发出请求或者应答网络请求。 ② Socket是连接运行在网络上的两个程序间的双向通信的端点。 ③ 网络通讯其实指…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...