一、使用audacity分析浊音、清音、爆破音的时频特性
1.a
频谱图:
时域波形:
浊音的时域波形具有周期性,频谱具有较明显的共振峰,频谱能量分布较均匀。
2.清音s
频谱图:
时域波形:
清音的时域波形几乎没有起伏,无周期性变化,
频谱无明显共振峰,低频部分能量较高,随后逐渐减小。
3.爆破音p
频谱图:
时域波形:
爆破音的时域波形有短暂的明显起伏,而后归于平稳,
频谱图低频部分能量均匀,随后逐渐减小。
二、RGB文件熵计算
test文件分辨率为256*256,数据格式为每个像素占用3字节。
RGB文件为三通道,按照BGRBGRBGR……排列而成。
代码如下:
#include<iostream>
#include<stdio.h>
#include<malloc.h>
using namespace std;
int main()
{
//原图宽高
int height = 256;
int width = 256;
unsigned char* Y_in;
unsigned char* R_in;
unsigned char* G_in;
unsigned char* B_in;
//装入原图和rgb通道数据
Y_in = new unsigned char[256 * 256 * 3];
R_in = new unsigned char[256 * 256];
G_in = new unsigned char[256 * 256];
B_in = new unsigned char[256 * 256];
FILE* fp;
fopen_s(&fp, "D:\\大三\\数据压缩\\第一周作业\\test.rgb", "rb");
fread(Y_in, sizeof(unsigned char), 256 * 256 * 3, fp);
//概率
double pro_R[256] = { 0 };
double pro_G[256] = { 0 };
double pro_B[256] = { 0 };
//熵
double HR = 0;
double HG = 0;
double HB = 0;
int i, j;
//数组存储rgb
for (i = 0, j = 0; i < 256 * 256 * 3; i = i + 3, j++)
{
B_in[j] = *(Y_in + i);
G_in[j] = *(Y_in + i + 1);
R_in[j] = *(Y_in + i + 2);
}
//分别统计次数
for (i = 0; i < 256; i++)
{
for (j = 0; j < height * width; j++)
{
if (R_in[j] == i)
pro_R[i]++;
if (G_in[j] == i)
pro_G[i]++;
if (B_in[j] == i)
pro_B[i]++;
}
}
//计算概率
for (i = 0; i < 256; i++)
{
pro_R[i] = pro_R[i] / double(height * width);
pro_G[i] = pro_G[i] / double(height * width);
pro_B[i] = pro_B[i] / double(height * width);
}
//计算熵
for (i = 0; i < 256; i++)
{
if (pro_R[i] != 0)
HR += -pro_R[i] * log2(pro_R[i]);
if (pro_G[i] != 0)
HG += -pro_G[i] * log2(pro_G[i]);
if (pro_B[i] != 0)
HB += -pro_B[i] * log2(pro_B[i]);
}
//输出
cout << "H(R)=" << HR << endl;
cout << "H(G)=" << HG << endl;
cout << "H(B)=" << HB << endl;
}
输出结果为: