⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zhifantu.m

📁 如何计算音频文件的直方图的matlab源代码!
💻 M
字号:
%edit by yinxiong 20070620
%抗TSM攻击的音频水印算法的研究 (In DWT Domain) 
function y=zhifantu(a)
% a='D:\zaiti\抗时间伸缩变换音频水印算法In DWT Domain\water.wav';
% %计算音频文件的直方图
% [yCarrier,SampleCarrier,SampleBit]=wavread(a);
% YCarrier=yCarrier*2^SampleBit;
% 
% %规定每个段长的尺寸为M(直方图的BIN的尺寸M是相同的)
% M=300;
% %总共音频所拥有的BIN数目记为L
% % L=fix(2^SampleBit)/M);
% if mod(2^SampleBit,M)==0
%     L=(2^(SampleBit+1))/M;
% else
%     L=fix((2^(SampleBit+1))/M)+1;
% end
% 
% % %音频的幅度总共分为L段,
% % L=300;
% % %每段的幅度区间的值为M
% % M=2^(SampleBit+1)/L;
% 
% %用数组zf来保存直方图中的纵坐标
% m=0;
% for i=1:L
%     j1=-2^(SampleBit)+(i-1)*M;
%     j2=-2^(SampleBit)+i*M-1;
%     for k=1:length(YCarrierSortCa3)
%     if (YCarrierSortCa3(k,1)<j2)
%         if (YCarrierSortCa3(k,1)>=j1)
%         m=m+1;
%         end
%     end
%     zf(i)=m;
%     end
%     m=0;
% end
% y=zf;
% n=sum(zf);
%  i=1:L;
% %  c=zf(1,i);
% % j=i/2^(SampleBit);
% j=i*M;
%  plot(j,zf);
%  title('a所代表的直方图');
%  axis([0 2*10^5 0 2*10^3]);
% grid on;

% function y=zhifantu(a)

%计算音频文件的直方图
[yCarrier,SampleCarrier,SampleBit]=wavread(a);
YCarrier=yCarrier*2^SampleBit;
%将音频文件的幅度值进行排序
[YCarrierSort,IXSort]=sort(YCarrier);
%对排序后的音频文件进行小波分解,用的小波基为'db1',分解层数为3
[YCarrierSortCa1,YCarrierSortCd1]=dwt(YCarrierSort,'db1');
[YCarrierSortCa2,YCarrierSortCd2]=dwt(YCarrierSortCa1,'db1');
[YCarrierSortCa3,YCarrierSortCd3]=dwt(YCarrierSortCa2,'db1');

%规定每个段长的尺寸为M(直方图的BIN的尺寸M是相同的)
M=300;
%总共音频所拥有的BIN数目记为L
% L=fix(2^SampleBit)/M);
if mod(3*10^5,M)==0
    L=(3*10^5)/M;
else
    L=fix((3*10^5)/M)+1;
end

%用数组zf来保存直方图中的纵坐标
m=0;
for i=1:L
    j1=-1.5*10^5+(i-1)*M;
    j2=-1.5*10^5+i*M-1;
    for k=1:length(YCarrierSortCa3)
    if (YCarrierSortCa3(k,1)<=j2)
        if (YCarrierSortCa3(k,1)>=j1)
        m=m+1;
        end
    end
    zf(i)=m;
    end
    m=0;
end
y=zf;
n=sum(zf);
 i=1:L;
%  c=zf(1,i);
j=i*M;
 plot(j,zf);
 title('所代表的直方图');
 axis([0 3*10^5 0 10^3]);
grid on;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -