17、matlab实现均值滤波、中值滤波、Butterworth滤波和线性相位FIR滤波

1、创建信号

1)创建正余弦信号、噪声信号和混合信号

原始正余弦信号公式:Signal1= sin(2*pi*20* t) + sin(2*pi*40* t) + sin(2*pi*60* t)

高斯分布的白噪声:NoiseGauss= [randn(1,2000)]

均匀分布的白噪声:[rand(1,2000)]

正余弦信号、噪声信号和混合信号代码:

N = 2000; %采样点数
Fs = 2000; %采样频率
t = 0:1 / Fs:1 - 1 / Fs; %时间序列
Signal1= sin(2*pi*20* t) + sin(2*pi*40* t) + sin(2*pi*60* t);
NoiseGauss= [randn(1,2000)]; %高斯分部白噪声
NoiseWhite= [rand(1,2000)]; %后100点均匀分布白噪声
NoiseSignal1= Signal1+NoiseGauss; %设计混合信号1
NoiseSignal2= Signal1+NoiseWhite; %设计混合信号2
subplot(5,1,1);
plot(Signal1);
title('正余弦信号');
subplot(5,1,2);
plot(NoiseGauss);
title('高斯噪声');
subplot(5,1,3);
plot(NoiseWhite);
title('白噪声');
subplot(5,1,4);
plot(NoiseSignal1);
title('混合高斯噪声信号');
subplot(5,1,5);
plot(NoiseSignal2);
title('混合白噪声信号');

试图效果:

2)创建方波信号、噪声及混合信号

原始方波信号公式:

Signal2=[2*ones(1,50),zeros(1,50),-1*ones(1,100),zeros(1,50),-2*ones(1,50),zeros(1,50),1*ones(1,100),zeros(1,50),2*ones(1,50),zeros(1,50),-1*ones(1,100),zeros(1,50),-2*ones(1,50),zeros(1,50),1*ones(1,100),zeros(1,50),2*ones(1,50),zeros(1,50),-1*ones(1,100),zeros(1,50),-2*ones(1,50),zeros(1,50),1*ones(1,100),zeros(1,50),2*ones(1,50),zeros(1,50),-1*ones(1,100),zeros(1,50),-2*ones(1,50),zeros(1,50),1*ones(1,100),zeros(1,50),]

高斯分布的白噪声:NoiseGauss= [randn(1,2000)]

均匀分布的白噪声:[rand(1,2000)]

方波信号、噪声及混合信号代码

N = 2000; %采样点数
Fs = 2000; %采样频率
t = 0:1 / Fs:1 - 1 / Fs; %时间序列
NoiseGauss= [randn(1,2000)]; %高斯分部白噪声
NoiseWhite= [rand(1,2000)]; %后100点均匀分布白噪声
Signal2=[2*ones(1,50),zeros(1,50),-1*ones(1,100),zeros(1,50),-2*ones(1,50),zeros(1,50),1*ones(1,100),zeros(1,50),2*ones(1,50),zeros(1,50),-1*ones(1,100),zeros(1,50),-2*ones(1,50),zeros(1,50),1*ones(1,100),zeros(1,50),2*ones(1,50),zeros(1,50),-1*ones(1,100),zeros(1,50),-2*ones(1,50),zeros(1,50),1*ones(1,100),zeros(1,50),2*ones(1,50),zeros(1,50),-1*ones(1,100),zeros(1,50),-2*ones(1,50),zeros(1,50),1*ones(1,100),zeros(1,50),];
NSignal1= Signal2+NoiseGauss; %设计混合信号1
NSignal2= Signal2+NoiseWhite; %设计混合信号2
subplot(5,1,1);
plot(Signal2);
title('方波信号');
subplot(5,1,2);
plot(NoiseGauss);
title('高斯噪声');
subplot(5,1,3);
plot(NoiseWhite);
title('白噪声');
subplot(5,1,4);
plot(NSignal1);
title('方波混合高斯噪声信号');
subplot(5,1,5);
plot(NSignal2);
title('方波混合白噪声信号');

试图效果:

2、均值滤波filter()函数

语法:y = filter(b,a,x) 使用由分子和分母系数 b 和 a 定义的有理传递函数 对输入数据 x 进行滤波。

1)正余弦混合噪声信号均值滤波

代码:

N = 2000; %采样点数
Fs = 2000; %采样频率
t = 0:1 / Fs:1 - 1 / Fs; %时间序列
Signal1= sin(2*pi*20* t) + sin(2*pi*40* t) + sin(2*pi*60* t);
NoiseGauss= [randn(1,2000)]; %高斯分部白噪声
NoiseWhite= [rand(1,2000)]; %后100点均匀分布白噪声
NoiseSignal1= Signal1+NoiseGauss; %设计混合信号1
NoiseSignal2= Signal1+NoiseWhite; %设计混合信号2
b=[1 1 1 1 1 1]/6;
Signal_Filter1 = filter(b,1,NoiseSignal1);
Signal_Filter2 = filter(b,1,NoiseSignal2);
figure(1);
subplot(3,2,1);               
plot(Signal1);
title('原始信号1');
subplot(3,2,3);               
plot(NoiseSignal1);
title('高斯混合信号1');
subplot(3,2,5);  
plot(Signal_Filter1);
title('均值滤波后高斯混合信号1');
subplot(3,2,2);               
plot(Signal1);
title('原始信号1');
subplot(3,2,4);               
plot(NoiseSignal2);
title('白噪声混合信号1');
subplot(3,2,6);  
plot(Signal_Filter2);
title('均值滤波后白噪声混合信号1');

 视图效果:竖直方向三幅图进行对比

 2)方波混合噪声信号均值滤波

 代码

N = 2000; %采样点数
Fs = 2000; %采样频率
t = 0:1 / Fs:1 - 1 / Fs; %时间序列
NoiseGauss= [randn(1,2000)]; %高斯分部白噪声
NoiseWhite= [rand(1,2000)]; %后100点均匀分布白噪声
Signal2=[2*ones(1,50),zeros(1,50),-1*ones(1,100),zeros(1,50),-2*ones(1,50),zeros(1,50),1*ones(1,100),zeros(1,50),2*ones(1,50),zeros(1,50),-1*ones(1,100),zeros(1,50),-2*ones(1,50),zeros(1,50),1*ones(1,100),zeros(1,50),2*ones(1,50),zeros(1,50),-1*ones(1,100),zeros(1,50),-2*ones(1,50),zeros(1,50),1*ones(1,100),zeros(1,50),2*ones(1,50),zeros(1,50),-1*ones(1,100),zeros(1,50),-2*ones(1,50),zeros(1,50),1*ones(1,100),zeros(1,50),];
NSignal1= Signal2+NoiseGauss; %设计混合信号1
NSignal2= Signal2+NoiseWhite; %设计混合信号2
b=[1 1 1 1 1 1]/6;
Signal_Filter3 = filter(b,1,NSignal1);
Signal_Filter4 = filter(b,1,NSignal2);
figure(2);
subplot(3,2,1);               
plot(Signal2);
title('原始信号2');
subplot(3,2,3);               
plot(NSignal1);
title('高斯混合信号2');
subplot(3,2,5);  
plot(Signal_Filter3);
title('均值滤波后高斯混合信号2');
subplot(3,2,2);               
plot(Signal2);
title('原始信号2');
subplot(3,2,4);               
plot(NSignal2);
title('白噪声混合信号2');
subplot(3,2,6);  
plot(Signal_Filter4);
title('均值滤波后白噪声混合信号2');

视图效果:

 3、中值滤波:medfilt1()函数

语法:medfilt1(x,n)对x应用一个n阶一维中值滤波器


1)正余弦混合噪声信号中值滤波

代码

N = 2000; %采样点数
Fs = 2000; %采样频率
t = 0:1 / Fs:1 - 1 / Fs; %时间序列
Signal1= sin(2*pi*20* t) + sin(2*pi*40* t) + sin(2*pi*60* t);
NoiseGauss= [randn(1,2000)]; %高斯分部白噪声
NoiseWhite= [rand(1,2000)]; %后100点均匀分布白噪声
NoiseSignal1= Signal1+NoiseGauss; %设计混合信号1
NoiseSignal2= Signal1+NoiseWhite; %设计混合信号2
Signal_Filter1=medfilt1(NoiseSignal1,11);
Signal_Filter2=medfilt1(NoiseSignal2,11);
figure(1);
subplot(3,2,1);               
plot(Signal1);
title('原始信号1');
subplot(3,2,3);               
plot(NoiseSignal1);
title('高斯混合信号1');
subplot(3,2,5);  
plot(Signal_Filter1);
title('中值滤波后高斯混合信号1');
subplot(3,2,2);               
plot(Signal1);
title('原始信号1');
subplot(3,2,4);               
plot(NoiseSignal2);
title('白噪声混合信号1');
subplot(3,2,6);  
plot(Signal_Filter2);
title('中值滤波后白噪声混合信号1');

视图效果

2)方波混合噪声信号中值滤波 

代码

N = 2000; %采样点数
Fs = 2000; %采样频率
t = 0:1 / Fs:1 - 1 / Fs; %时间序列
NoiseGauss= [randn(1,2000)]; %高斯分部白噪声
NoiseWhite= [rand(1,2000)]; %后100点均匀分布白噪声
Signal2=[2*ones(1,50),zeros(1,50),-1*ones(1,100),zeros(1,50),-2*ones(1,50),zeros(1,50),1*ones(1,100),zeros(1,50),2*ones(1,50),zeros(1,50),-1*ones(1,100),zeros(1,50),-2*ones(1,50),zeros(1,50),1*ones(1,100),zeros(1,50),2*ones(1,50),zeros(1,50),-1*ones(1,100),zeros(1,50),-2*ones(1,50),zeros(1,50),1*ones(1,100),zeros(1,50),2*ones(1,50),zeros(1,50),-1*ones(1,100),zeros(1,50),-2*ones(1,50),zeros(1,50),1*ones(1,100),zeros(1,50),];
NSignal1= Signal2+NoiseGauss; %设计混合信号1
NSignal2= Signal2+NoiseWhite; %设计混合信号2
Signal_Filter3=medfilt1(NSignal1,11);
Signal_Filter4=medfilt1(NSignal2,11);
figure(2);
subplot(3,2,1);               
plot(Signal2);
title('原始信号2');
subplot(3,2,3);               
plot(NSignal1);
title('高斯混合信号2');
subplot(3,2,5);  
plot(Signal_Filter3);
title('中值滤波后高斯混合信号2');
subplot(3,2,2);               
plot(Signal2);
title('原始信号2');
subplot(3,2,4);               
plot(NSignal2);
title('白噪声混合信号2');
subplot(3,2,6);  
plot(Signal_Filter4);
title('中值滤波后白噪声混合信号2');

视图效果

4、 Butterworth低通滤波:巴特沃斯滤波butter()函数

语法:[b,a] = butter(n,Wn) 返回归一化截止频率为 Wn 的 n 阶低通数字巴特沃斯滤波器的传递函数系数。

1)正余弦混合噪声信号Butterworth低通滤波
代码

N = 2000; %采样点数
Fs = 2000; %采样频率
t = 0:1 / Fs:1 - 1 / Fs; %时间序列
Signal1= sin(2*pi*20* t) + sin(2*pi*40* t) + sin(2*pi*60* t);
NoiseGauss= [randn(1,2000)]; %高斯分部白噪声
NoiseWhite= [rand(1,2000)]; %后100点均匀分布白噪声
NoiseSignal1= Signal1+NoiseGauss; %设计混合信号1
NoiseSignal2= Signal1+NoiseWhite; %设计混合信号2
Wc=2*250/Fs;%截止频率 50Hz
[b,a]=butter(4,Wc);%Butterworth滤波
Signal_Filter1=filter(b,a,NoiseSignal1);
Signal_Filter2=filter(b,a,NoiseSignal2);
figure(1);
subplot(3,2,1);               
plot(Signal1);
title('原始信号1');
subplot(3,2,3);               
plot(NoiseSignal1);
title('高斯混合信号1');
subplot(3,2,5);  
plot(Signal_Filter1);
title('巴特沃斯低通滤波后高斯混合信号1');
subplot(3,2,2);               
plot(Signal1);
title('原始信号1');
subplot(3,2,4);               
plot(NoiseSignal2);
title('白噪声混合信号1');
subplot(3,2,6);  
plot(Signal_Filter2);
title('巴特沃斯低通滤波后白噪声混合信号1');

视图效果

 2)方波混合噪声信号Butterworth低通滤波

代码

N = 2000; %采样点数
Fs = 2000; %采样频率
t = 0:1 / Fs:1 - 1 / Fs; %时间序列
NoiseGauss= [randn(1,2000)]; %高斯分部白噪声
NoiseWhite= [rand(1,2000)]; %后100点均匀分布白噪声
Signal2=[2*ones(1,50),zeros(1,50),-1*ones(1,100),zeros(1,50),-2*ones(1,50),zeros(1,50),1*ones(1,100),zeros(1,50),2*ones(1,50),zeros(1,50),-1*ones(1,100),zeros(1,50),-2*ones(1,50),zeros(1,50),1*ones(1,100),zeros(1,50),2*ones(1,50),zeros(1,50),-1*ones(1,100),zeros(1,50),-2*ones(1,50),zeros(1,50),1*ones(1,100),zeros(1,50),2*ones(1,50),zeros(1,50),-1*ones(1,100),zeros(1,50),-2*ones(1,50),zeros(1,50),1*ones(1,100),zeros(1,50),];
NSignal1= Signal2+NoiseGauss; %设计混合信号1
NSignal2= Signal2+NoiseWhite; %设计混合信号2
Wc=2*250/Fs;%截止频率 50Hz
[b,a]=butter(4,Wc);%Butterworth滤波
Signal_Filter3=filter(b,a,NSignal1);
Signal_Filter4=filter(b,a,NSignal2);
figure(2);
subplot(3,2,1);               
plot(Signal2);
title('原始信号2');
subplot(3,2,3);               
plot(NSignal1);
title('高斯混合信号2');
subplot(3,2,5);  
plot(Signal_Filter3);
title('巴特沃斯低通滤波后高斯混合信号2');
subplot(3,2,2);               
plot(Signal2);
title('原始信号2');
subplot(3,2,4);               
plot(NSignal2);
title('白噪声混合信号2');
subplot(3,2,6);  
plot(Signal_Filter4);
title('巴特沃斯低通滤波后白噪声混合信号2');

视图效果

4、线性相位FIR滤波:firls()函数

语法:firls(n,f,a):返回包含n阶FIR滤波器的n+1个系数的行向量b。所得滤波器的频率和幅度特性与向量f和a给出的特性相匹配。

 1)正余弦混合噪声信号线性相位FIR滤波

代码

N = 2000; %采样点数
Fs = 2000; %采样频率
t = 0:1 / Fs:1 - 1 / Fs; %时间序列
Signal1= sin(2*pi*20* t) + sin(2*pi*40* t) + sin(2*pi*60* t);
NoiseGauss= [randn(1,2000)]; %高斯分部白噪声
NoiseWhite= [rand(1,2000)]; %后100点均匀分布白噪声
NoiseSignal1= Signal1+NoiseGauss; %设计混合信号1
NoiseSignal2= Signal1+NoiseWhite; %设计混合信号2
F  =  0:0.05:0.95;%频率点对的向量
A  =  [1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];%与F的参数对应
b  =  firls(2,F,A);%20为阶次
Signal_Filter1 = filter(b,1,NoiseSignal1);
Signal_Filter2 = filter(b,1,NoiseSignal2);
figure(1);
subplot(3,2,1);               
plot(Signal1);
title('原始信号1');
subplot(3,2,3);               
plot(NoiseSignal1);
title('高斯混合信号1');
subplot(3,2,5);  
plot(Signal_Filter1);
title('FIR滤波后高斯混合信号1');
subplot(3,2,2);               
plot(Signal1);
title('原始信号1');
subplot(3,2,4);               
plot(NoiseSignal2);
title('白噪声混合信号1');
subplot(3,2,6);  
plot(Signal_Filter2);
title('FIR滤波后白噪声混合信号1');

视图效果 

 2)方波混合噪声信号线性相位FIR滤波

代码

N = 2000; %采样点数
Fs = 2000; %采样频率
t = 0:1 / Fs:1 - 1 / Fs; %时间序列
NoiseGauss= [randn(1,2000)]; %高斯分部白噪声
NoiseWhite= [rand(1,2000)]; %后100点均匀分布白噪声
Signal2=[2*ones(1,50),zeros(1,50),-1*ones(1,100),zeros(1,50),-2*ones(1,50),zeros(1,50),1*ones(1,100),zeros(1,50),2*ones(1,50),zeros(1,50),-1*ones(1,100),zeros(1,50),-2*ones(1,50),zeros(1,50),1*ones(1,100),zeros(1,50),2*ones(1,50),zeros(1,50),-1*ones(1,100),zeros(1,50),-2*ones(1,50),zeros(1,50),1*ones(1,100),zeros(1,50),2*ones(1,50),zeros(1,50),-1*ones(1,100),zeros(1,50),-2*ones(1,50),zeros(1,50),1*ones(1,100),zeros(1,50),];
NSignal1= Signal2+NoiseGauss; %设计混合信号1
NSignal2= Signal2+NoiseWhite; %设计混合信号2
F  =  0:0.05:0.95;%频率点对的向量
A  =  [1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];%与F的参数对应
b  =  firls(2,F,A);%20为阶次
Signal_Filter3 = filter(b,1,NSignal1);
Signal_Filter4 = filter(b,1,NSignal2);
figure(2);
subplot(3,2,1);               
plot(Signal2);
title('原始信号2');
subplot(3,2,3);               
plot(NSignal1);
title('高斯混合信号2');
subplot(3,2,5);  
plot(Signal_Filter3);
title('FIR滤波后高斯混合信号2');
subplot(3,2,2);               
plot(Signal2);
title('原始信号2');
subplot(3,2,4);               
plot(NSignal2);
title('白噪声混合信号2');
subplot(3,2,6);  
plot(Signal_Filter4);
title('FIR滤波后白噪声混合信号2');

视图效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/344481.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库管理-第198期 升级Oracle ACE Pro,新赛季继续努力(20240605)

数据库管理198期 2024-06-05 数据库管理-第198期 升级ACE Pro,新赛季继续努力(20240605)1 惊喜2 变化3 Oracle ACE总结 数据库管理-第198期 升级ACE Pro,新赛季继续努力(20240605) 作者:胖头鱼的…

【MySQL数据库】my.ini文件参数中文注释

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 🤓 同时欢迎大家关注其他专栏,我将分享Web前后端开发、人工智能、机器学习、深…

【JavaScript】内置对象 - 字符串对象 ④ ( 根据索引位置返回字符串中的字符 | 代码示例 )

文章目录 一、根据索引位置返回字符串中的字符1、charAt 函数获取字符2、charCodeAt 函数获取字符 ASCII 码3、数组下标获取字符 String 字符串对象参考文档 : https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String 一、根据索引位置返回…

React Hooks 封装可粘贴图片的输入框组件(wangeditor)

需求是需要一个文本框 但是可以支持右键或者ctrlv粘贴图片,原生js很麻烦,那不如用插件来实现吧~我这里用的wangeditor插件,初次写初次用,可能不太好,但目前是可以达到实现需求的一个效果啦!后面再改进吧~ …

【NI国产替代】500 MSPS 采样率,14 bit 分辨率数据采集盒子

• 双高速高精度数据采集通道 • 支持内外精准触发采样模式 • 丰富的总线控制接口 • 抗干扰能力强 高速采集盒子是一款双通道,具有 500 MSPS 采样率,14 bit 分辨率的高速高精度数据采集设备,其模拟输入带宽为 200 MHz,…

278 基于Matlab GUI的中重频PD雷达仿真系统

基于Matlab GUI的中重频PD雷达仿真系统。具有26页文档报告。仿真雷达信号的发射、传播、散射、接收、滤波、信号处理、数据处理的全部物理过程,因此应当实现对雷达发射机、天线、接收机、回波信号处理、数据处理的建模与仿真。程序已调通,可直接运行。 2…

【启程Golang之旅】让文件操作变得简单

欢迎来到Golang的世界!在当今快节奏的软件开发领域,选择一种高效、简洁的编程语言至关重要。而在这方面,Golang(又称Go)无疑是一个备受瞩目的选择。在本文中,带领您探索Golang的世界,一步步地了…

C++STL简介

一、STL介绍 STL(standard template libaray-标准模板库):是C标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。 二、STL的版本 1、原始版本 Alexander Stepanov、Meng Lee 在惠普实验室完…

二叉树的实现(初阶数据结构)

1.二叉树的概念及结构 1.1 概念 一棵二叉树是结点的一个有限集合,该集合: 1.或者为空 2.由一个根结点加上两棵别称为左子树和右子树的二叉树组成 从上图可以看出: 1.二叉树不存在度大于2的结点 2.二叉树的子树有左右之分,次序不能…

造假高手——faker

在测试写好的代码时通常需要用到一些测试数据,大量的真实数据有时候很难获取,如果手动制造测试数据又过于繁重无聊,显得不够优雅,今天我们介绍的faker这个轮子可以完美的解决这个问题。faker是一个用于生成各种类型假数据的库&…

C++STL初阶(3):string模拟实现的完善

1.流提取>>的优化(利用缓存区的思想) istream& operator>>(istream& is,string& str) {str.clear();char c;c is.get();while (c ! \0 && c ! \n) {str c;c is.get();}return is; } 在上文的对string的实践中&#…

Android Lottie 体积优化实践:从 6.4 MB 降到 530 KB

一、说明 产品提出需求:用户有 8 个等级,每个等级对应一个奖牌动画。 按照常用的实现方式: 设计提供 8 个 lottie 动画(8 个 json 文件)。研发将 json 文件打包进入 APK 中。根据不同等级播放指定的动画。 每一个 …

React + SpringBoot实现图片预览和视频在线播放,其中视频实现切片保存和分段播放

图片预览和视频在线播放 需求描述 实现播放视频的需求时,往往是前端直接加载一个mp4文件,这样做法在遇到视频文件较大时,容易造成卡顿,不能及时加载出来。我们可以将视频进行切片,然后分段加载。播放一点加载一点&am…

Nginx(openresty) 查看连接数和并发送

1 通过浏览器查看 #修改nginx配置文件 location /status {stub_status on;access_log off;allow 192.168.50.0/24;deny all;} #重新加载 sudo /usr/local/openresty/nginx/sbin/nginx -s reloadActive connections //当前 Nginx 当前处理的活动连接数。 server accepts handl…

【kubernetes】k8s集群中的ingress(对外服务)规则详解

目录 一、Ingress 简介 1.1service的作用 1.2外部访问方案 (四种)🌹🌹🌹 部署externalIPs 1.3Ingress 是什么 二、Ingress 组成🌹🌹🌹 三、Ingress 工作原理🐱&#x1f…

kafka的leader和follower

leader和follower kafka的leader和follower是相对于分区有意义的,不是相对于broker。 因为每个分区都有leader和follower, leader负责读写数据。 follower负责复制leader的数据保存到自己的日志数据中,并在leader挂掉后重新选举出leader。 kafka会再…

九家大模型“决战”高考!AI作文哪家强?阅卷名师点评来了!

2024.06.07 本文字数:12474,阅读时长大约21分钟 导读:语文老师对AI作文的评价是,“中规中矩,没有‘血肉’,缺一点情感和灵气。” 作者 | 第一财经 刘晓洁 冯小芯 马一凡 吕倩 又到一年高考季,…

使用树莓派和 L298N 来 DIY 小车底盘

树莓派小车可以作为 STEM(科学、技术、工程、数学)教育的工具,在实际操作中帮助学生理解和学习电子技术、编程和机器人原理。可以培养学生的动手能力、解决问题的能力和创新思维。 随着近年 AI 技术的高速发展,SLAM、VSLAM 甚至带…

[office] Excel教学:Excel通配符怎么用? #其他#职场发展

Excel教学:Excel通配符怎么用? 尽管Excel使用了很多年,但很多人都还是忽略了Excel通配符的存在,不知道通配符是什么,不知道如何使用它。今天我就完整地介绍一下通配符,让你彻底地认识通配符。 关于通配符…

结构体(1)<C语言>

导言 结构体是C语言中的一种自定义类型,它的值(成员变量)可以是多个,且这些值可以为不同类型,这也是和数组的主要区别,下面将介绍它的一些基本用法,包括:结构体的创建、结构体变量的…