一.元音波形
1.幅频特性
2.时域波形
二、实现RGB文件三通道分量的信息熵计算。
代码如下:
#define _CRT_SECURE_NO_WARNINGS
#define ImageSize 256*256
#include <stdio.h>
#include <math.h>
#include <malloc.h>
float H(unsigned char* buffer)
{
int Temp;
double Num[256] = { 0 };
for (int i = 0; i < ImageSize; i++)
{
Temp = *(buffer + i);
Num[Temp]++;
}
double P[256] = { 0 };
for (int i = 0; i < 256; i++)
{
P[i] = Num[i] / (256 * 256);
}
float h = 0;
for (int i = 0; i < 256; i++)
{
if (P[i] >= 1e-15)
{
h = h + P[i] * log(1 / P[i]) / log(2.0);
}
}
return h;
}
int main()
{
unsigned char* RGBBufferIn;
unsigned char* bBufferIn;
unsigned char* gBufferIn;
unsigned char* rBufferIn;
RGBBufferIn = (unsigned char*)malloc(3 * ImageSize);
bBufferIn = (unsigned char*)malloc(ImageSize);
gBufferIn = (unsigned char*)malloc(ImageSize);
rBufferIn = (unsigned char*)malloc(ImageSize);
//读入色度分量信号
FILE* fp = fopen("C://Users//14796//Desktop//test.rgb", "rb");
fread(RGBBufferIn, sizeof(unsigned char), 3 * ImageSize, fp);
for (int i = 0; i < 256 * 256; i++)
{
*(bBufferIn + i) = *(RGBBufferIn + 3 * i);
}
for (int i = 0; i < 256 * 256; i++)
{
*(gBufferIn + i) = *(RGBBufferIn + 1 + 3 * i);
}
for (int i = 0; i < 256 * 256; i++)
{
*(rBufferIn + i) = *(RGBBufferIn + 2 + 3 * i);
}
float HofB = H(bBufferIn);
float HofG = H(gBufferIn);
float HofR = H(rBufferIn);
printf("蓝色色分量的信息熵是%f\n", HofB);
printf("绿色分量的信息熵是%f\n", HofG);
printf("红色分量的信息熵是%f\n", HofR);
}
输出结果: