matlab绘制图像的幅度谱 相位谱

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab绘制图像的幅度谱 相位谱相关的知识,希望对你有一定的参考价值。

如何用matlab绘制图像的幅度谱 相位谱
并根据幅度谱和相位谱重建空间域图像

可以参考下面的代码:

首先要写出图像的函数,不妨设为f;

然后求它的傅里叶变换g=fft(f);

求幅度谱f1=atan(g);

求相位谱f2=angle(g);

stem(f1,'--','fill');

stem(f2,'--','fill')

扩展资料:

Matlab常用函数和命令

diag 矩阵对角元素提取、创建对角阵

diary Matlab指令窗文本内容记录

diff 数值差分、符号微分

digits 符号计算中设置符号数值的精度

double 把其他类型对象转换为双精度数值

drawnow 更新事件队列强迫Matlab刷新屏幕

floor(x):下取整,即舍去正小数至相邻整数

ceil(x):上取整,即加入正小数至相邻整数

errortrap 错误发生后程序是否继续执行的控制

参考资料来源:百度百科-MATLAB

参考技术A

Y=fft(y,512);

F =10*f*[0:256]/512;

fp=2*sqrt(Y.*conj(Y));%幅度谱

xp=angle(Y); %相位谱

gl=abs(Y).^2; %功率谱

magif=ifft2(abs(f2));%幅度重构

pha=angle(f2);%取相位

phaif=ifft2(exp(j*pha));%相位重构

数据是x(i),共N个点,采样频率是fsample

dt = 1/fsample

df = 1/N/dt

f = 0:df:(N-1)*df

X=fft(fftshift(x))

plot(f,real(X))

plot(f,imag(X))

扩展资料:

相位谱是调整声音相位的,最容易理解的就是左右声道的位置调整,实际上相位还决定着其他很多声音的属性。

对于一个系统,能够通过其相位谱来判断该系统是否为线性相位系统。线性相位系统故名思义,看相位是否随频率线性变化。但相位谱的作用不仅限于此,奥本海姆在一篇经典文献中认为信号的相位包含的信息大于幅度,实际上从最初的最小相位系统,倒谱分析,到系统辨识,高阶谱估计等理论都是以相位谱为突破口。

参考资料来源:百度百科-相位谱

参考技术B 首先要写出图像的函数,不妨设为f;
然后求它的傅里叶变换g=fft(f);
求幅度谱f1=atan(g);
求相位谱f2=angle(g);
stem(f1,'--','fill');
stem(f2,'--','fill')
参考技术C Y=fft(y,512);
F =10*f*[0:256]/512;
fp=2*sqrt(Y.*conj(Y));%幅度谱
xp=angle(Y); %相位谱
gl=abs(Y).^2; %功率谱
plot(F,fp(1:257));

plot(F,xp(1:257));

plot(F,gl(1:257));
你补充解答不了.本回答被提问者采纳
参考技术D 当然可以代替

短时幅度谱短时幅度谱估计在语音增强方面的MATLAB仿真

1.软件版本

matlab2021a

2.本算法理论知识

        处理宽带噪声的最通用技术是谱减法,即从带噪语音估值中减去噪声频谱估值,而得到纯净语音的频谱。由于人耳对语音频谱分量的相位不敏感,因而这种方法主要针对短时幅度谱。假定语音为平稳信号,而噪声和语音为加性信号且彼此不相关。此时带噪语音信号可表示为

 

 

 

 

3.部分核心代码

function enhancedsignal=wiener(noisyspeech,samplefrequency)
x=noisyspeech;
fs=samplefrequency;
nx=length(x);
enhanced_x=zeros(1,nx);
                                 %分帧和加窗
FrameLen=fix(0.025*fs);          %取25毫秒为一帧
overlap=FrameLen/2;
inc=FrameLen-overlap;            %帧移
x_frame=enframe(x,FrameLen,inc); %分帧
nf=size(x_frame,1);              % 帧数
win=hamming(FrameLen)';
x_window=[];
for k=1:nf
    x_row=x_frame(k,:).*win;     % 加窗
    x_window=[x_window;x_row];   
end
%对带噪语音进行DFT
y=fft(x_window');
ymag = abs(y);			
yphase = angle(y);	                         
NNoise=23;                      %取噪音段(语音的初始段)帧数
MN=mean(ymag(:,1:NNoise)')';
PN=mean(ymag(:,1:NNoise)'.^2)'; %初始噪声功率谱均值

NoiseCounter=0;%连续噪声段长度
SmoothFactor=9;%噪声平滑因子
Alpha=0.95;    %语音平滑因子
SNRPre=ones(size(MN));

%维纳滤波
for k=1:nf
     if k<=NNoise 
        SpeechFlag=0;
        NoiseCounter=NNoise;
    else 
           NoiseMargin=3;
           HangOver=8;
           SpectralDist= 20*(log10(ymag(:,k))-log10(MN));
           SpectralDist(find(SpectralDist<0))=0;
           Dist=mean(SpectralDist); 
           if (Dist < NoiseMargin) 
            NoiseFlag=1; 
            NoiseCounter=NoiseCounter+1;
           else
            NoiseFlag=0;
            NoiseCounter=0;
           end 
           if (NoiseCounter > HangOver) 
           SpeechFlag=0;    
           else 
           SpeechFlag=1; 
           end 
     end
    
    if SpeechFlag==0 
        MN=(SmoothFactor*MN+ymag(:,k))/(SmoothFactor+1);      %更新噪声均值
        PN=(SmoothFactor*PN+(ymag(:,k).^2))/(1+SmoothFactor); %更新噪声功率
    end
    
%------滤波
SNRNew=(ymag(:,k).^2)./PN-1;
SNRPost=Alpha*SNRPre+(1-Alpha).*max(SNRNew,0);
Gain=SNRPost./(SNRPost+1);
smag=Gain.*ymag(:,k);
SNRPre=smag.^2./PN;
spectrum= smag.*exp(j*yphase(:,k));
enhanced_x((inc*(k-1)+1):(inc*(k-1)+FrameLen))=enhanced_x((inc*(k-1)+1):(inc*(k-1)+FrameLen))+real(ifft(spectrum,FrameLen))';
end
enhancedsignal=enhanced_x;

4.仿真结论

5.参考文献

[1] 易克初. 语音信号处理[M]. 北京:国防工业出版社, 2000.

[2] LiZhao, KOBAYASHI, NIIMI Y Tone. Recongnition of Chinese continuous speech using continuous HMMs[J]. Journal of the Acoustical Society of Japan, 53(12), 933-940, 1997.

A03-03

6.完整源码获得方式

方式1:微信或者QQ联系博主
方式2:订阅,免费获得教程案例代码以及本博任意2份完整源码

 

以上是关于matlab绘制图像的幅度谱 相位谱的主要内容,如果未能解决你的问题,请参考以下文章

求matlab周期三角波信号频谱分析的代码,能画出三角波信号、幅度谱和相位谱。

Matlab的正弦波相位谱

用matlab进行傅里叶变换。傅里叶变换得到的相位谱、幅值谱有啥用?怎么分析?

在 MATLAB 下如何实现对一组数据振幅谱和相位谱

matlab设计复合信号不同频率的初相位

短时幅度谱短时幅度谱估计在语音增强方面的MATLAB仿真