首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏全栈程序员必看

    常用滤波器设计之低通滤波器、高通滤波器、带通滤波器、带阻滤波器

    =2^nextpow2(length(y));%找出大于y的个数的最大的2的指数值(自动进算最佳FFT步长nfft) %nfft=1024;%人为设置FFT的步长nfft y=y-mean(y);% *conj(y_ft)/nfft;%conj()函数是求y函数的共轭复数,实数的共轭复数是他本身。 y_f=fs*(0:nfft/2-1)/nfft;�T变换后对应的频率的序列 % y_p=y_ft. nfft/fs+1); plot(y_f(ni:na),abs(y_ft(ni:na)*2/nfft)); end elseif style==2 plot =2^nextpow2(length(y));%找出大于y的个数的最大的2的指数值(自动进算最佳FFT步长nfft) %nfft=1024;%人为设置FFT的步长nfft y=y-mean(y);% *conj(y_ft)/nfft;%conj()函数是求y函数的共轭复数,实数的共轭复数是他本身。 y_f=fs*(0:nfft/2-1)/nfft;�T变换后对应的频率的序列 % y_p=y_ft.

    3K20编辑于 2022-09-05
  • 来自专栏算法工程师的学习日志

    Matlab短时傅里叶变换和小波变换的时频分析

    语法: [S,F,T,P]=spectrogram(x,window,noverlap,nfft,fs) [S,F,T,P]=spectrogram(x,window,noverlap,F,fs) 说明 默认情况下,其他参数的默认值为:window---窗函数,默认为nfft长度的海明窗Hamming;noverlap---每一段的重叠样本数,默认值是在各段之间产生50%的重叠;nfft---做FFT变换的长度 Nfft---计算离散傅里叶变换的点数。它需要为标量。 Fs---采样频率Hz,如果指定为[],默认为1Hz。 S---输入信号x的短时傅里叶变换。 对于实信号x,如果nfft为偶数,则S的行数为(nfft/2+1),如果nfft为奇数,则行数为(nfft+1)/2,列数同上。 越大,频域的分辨率就越高(分辨率=fs/nfft),但离瞬时频率就越远; noverlap影响时间轴的分辨率,越接近nfft,分辨率越高,相应的冗余就越多,计算量越大,但计算机只要能承受,问题不大。

    2.6K30编辑于 2022-07-27
  • 来自专栏科学计算

    Matlab中短时傅里叶变换 spectrogram和stft的用法

    = spectrogram(x, window) s = spectrogram(x, window, noverlap) s = spectrogram(x, window, noverlap, nfft ) s = spectrogram(x, window, noverlap, nfft, fs) [s, f, t] = spectrogram(x, window, noverlap, nfft, fs ,fft的点数是256;当窗长大于256时,fft的点数取大于窗长的最小的2的整数次幂; fs表示采样率,用来归一化显示使用; f表示显示的频谱范围,f是一个向量,长度跟s的行数相同; 当x是实信号且nfft 为偶数时,s的行数为(nfft/2+1) 当x是实信号且nfft为奇数时,s的行数为(nfft+1)/2 当x是复信号时,s的行数为nfft 当在输入的参数列表中指定f后,函数会在f指定的频率处计算频谱图 在这里插入图片描述   最后再把功率谱密度的返回值加上 [s, f, t, p] = spectrogram(sig, window, nfft, f, fs); figure; imagesc(t,

    8.4K20发布于 2020-06-29
  • 来自专栏强化学习专栏

    Matlab实现经典功率谱估计的几种方法

    Fs:1; %产生含有噪声的序列 xn=cos(2*pi*40*n)+3*cos(2*pi*100*n)+randn(size(n)); window=boxcar(length(xn)); %矩形窗 nfft =1024; cxn=xcorr(xn,'unbiased'); %计算序列的自相关函数 CXk=fft(cxn,nfft); Pxx=abs(CXk); index=0:round(nfft/2-1) Matlab代码示例: clear; Fs=1000; n=0:1/Fs:1; xn=cos(2*pi*40*n)+3*cos(2*pi*100*n)+randn(size(n)); nfft=1024 ,p); index=0:round(nfft/2-1); k=index*Fs/nfft; plot_Pxx=10*log10(Pxx(index+1)); plot_Pxxc=10*log10(Pxxc ,Fs,range); [Pxx1,f]=pwelch(xn,window1,noverlap,nfft,Fs,range); [Pxx2,f]=pwelch(xn,window2,noverlap,nfft

    1.1K31编辑于 2024-12-03
  • 来自专栏Gnep's_Technology_Blog

    OFDM同步技术

    SNRdB = 30; % SNR MaxIter = 10; % 迭代次数 %CFOs = [0 0 0 0]; Nfft = 128; % FFT 大小 Ng = Nfft/4; % GI 长度 Nofdm = Nfft + Ng ; % 符号对应的可能性数量 Es = 1; A = sqrt(3/2/(M-1)*Es); % QAM 归一化因子 N = Nfft ', true);% 调制成复数 %***********************缺少了倒置的过程***********************% xt = ifft(Xf, Nfft ; % 发送的符号长度,为了方便,和Nfft保持一致 Ng=Nfft/4; % GI长度 Nofdm=Nfft+

    44110编辑于 2024-04-25
  • 来自专栏科学计算

    Matlab中fft与fwelch有什么区别?如何用fft求功率谱?

    是用来求功率谱的,采用Welch平均周期法对信号进行谱估计,它通过分段选取数据进行加窗求功率,再进行平均,pwelch函数的使用方式为: pxx = pwelch(x,window,noverlap,nfft noverlap,f,fs) 其中, X表示输入序列; window:当window是一个数值时,表示窗函数长度,即分段长度L,默认的窗函数为hamming窗;当window是一个序列时,表示窗函数序列; NFFT 表示FFT的点数,X为实数时,当NFFT是偶数时,Pxx的长度是(NFFT/2+1);当NFFT是奇数时,Pxx的长度是(NFFT+1)/2;X为复数时,Pxx的长度就是NFFT,如果NFFT没有指定,

    3.1K10发布于 2020-06-29
  • 来自专栏全栈程序员必看

    信号分析与处理1「建议收藏」

    例2:x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t),fs=100Hz,绘制: (1)数据个数N=32,FFT所用的采样点数NFFT=32; (2)N=32,NFFT=128 ; (3)N=136,NFFT=128; (4)N=136,NFFT=512。 =1024; cxn=xcorr(xn,’unbiased’); %计算序列的自相关函数 CXk=fft(cxn,nfft); Pxx=abs(CXk); index=0:round(nfft/2-1) ,p); index=0:round(nfft/2-1); k=index*Fs/nfft; plot_Pxx=10*log10(Pxx(index+1)); plot_Pxxc=10*log10(Pxxc ,Fs,range); [Pxx1,f]=pwelch(xn,window1,noverlap,nfft,Fs,range); [Pxx2,f]=pwelch(xn,window2,noverlap,nfft

    1.4K20编辑于 2022-09-20
  • 来自专栏Gnep's_Technology_Blog

    雷达模糊函数及MATLAB仿真

    = 2^n; u(1:nfft) = 0; j = 0; for index = 1:10:samp_num index; j = j+1; u(index:index+10- = fft(v,nfft); for freq = -6/tau:freq_del:6/tau; j = j+1; exf = exp(sqrt(-1) * 2. * pi * freq = 2^n; u(1:nfft) = 0; j = 0; for index = 1:10:samp_num index; j = j+1; u(index:index+10- 1) = PRN(j); end % set-up the array v v = u; delay = linspace(0,5*tau,nfft); freq_del = 8 / tau /100; j = 0; vfft = fft(v,nfft); for freq = -4/tau:freq_del:4/tau; j = j+1; exf = exp(sqrt(-1) * 2

    2.4K50编辑于 2023-11-17
  • 来自专栏全栈程序员必看

    Python语音信号处理

    语谱图 使用matplotlib可以直接获得语谱图,代码如下: #帧长20~30ms framelength = 0.025 #每帧点数 N = t*fs,通常情况下值为256或512,要与NFFT 相等 #而NFFT最好取2的整数次方,即framesize最好取的整数次方 framesize = framelength*framerate #找到与当前framesize最接近的2的正整数次方 x[1])#按与当前framesize差值升序排列 framesize = int(sortlist[0][0])#取最接近当前framesize的那个2的正整数次方值为新的framesize NFFT 1/3~1/2 overlapSize = int(round(overlapSize))#取整 spectrum,freqs,ts,fig = plt.specgram(waveData[0],NFFT = NFFT,Fs =framerate,window=np.hanning(M = framesize),noverlap=overlapSize,mode='default',scale_by_freq

    2.2K20编辑于 2022-09-01
  • 来自专栏J博士的博客

    经典功率谱估计及Matlab仿真

    电子工业出版社 部分matlab程序代码: 周期图法:(by宋同学) 1 Fs=1000; 2 f1=50; 3 f2=125; 4 f3=135; 5 N=128; 6 Nfft=N; *f3*t)+1.5*randn(size(n)); 10 figure; 11 plot(n,xn);grid on;title('时域信号'); 12 P=10*log10(abs(fft(xn,Nfft (1:N/2),P(1:N/2));grid on;title('功率谱(dB图)');ylabel('功率谱/dB'); 16 xlabel('频率/Hz'); 17 Pxx=abs(fft(xn,Nfft *f3*t)+1.5*randn(size(n)); 30 figure; 31 plot(n,xn);grid on;title('时域信号'); 32 P=10*log10(abs(fft(xn,Nfft =1024; 5 ncxk=3*nfft/4; 6 cxn=xcorr(x,'unbiased'); 7 CXk=fft(cxn,ncxk); 8 Pxx=abs(CXk); 9 index=

    2.2K40发布于 2020-03-12
  • BUUCTF [UTCTF2020]spectogram 1

    coeff=0.95): return np.append(signal[1], signal[1:] - coeff * signal[:-1]) def pow_spec(frames, NFFT ): complex_spec = np.fft.rfft(frames, NFFT) return 1 / NFFT * np.square(np.abs(complex_spec)) frame_sig(y, frame_len=2048, frame_step=512, win_func=np.hanning) # FFT及幅值平方 feature = pow_spec(frames, NFFT

    29200编辑于 2025-08-18
  • 来自专栏Pulsar-V

    Python MFCC算法

    upperf=6855.4976, alpha=0.97, samprate=16000, frate=100, wlen=0.0256, nfft =512): self.lowerf = lowerf self.upperf = upperf self.nfft = nfft self.ncep self.prior = 0 self.alpha = alpha # 构建梅尔滤波矩阵 self.filters = numpy.zeros((nfft /2+1,nfilt), 'd') dfreq = float(samprate) / nfft if upperf > samprate/2: frame): frame = self.pre_emphasis(frame) * self.win fft = numpy.fft.rfft(frame, self.nfft

    1.8K40发布于 2018-04-18
  • 来自专栏强化学习专栏

    间接法加窗分析信号的功率谱

    )/Fs; xn = 2*cos(2*pi*fc1*n) + 2*cos(2*pi*fc2*n) + 2*cos(2*pi*fc3*n); xn = awgn(xn,5); %加入高斯白噪声信号 nfft *window5; %计算序列的自相关函数 %不加窗自相关函数的傅里叶变换 cxn = xcorr(xn); CXk = fft(cxn,nfft); Pxx = abs(CXk); %汉明窗自相关函数的傅里叶变换 cxn1 = xcorr(xn1); CXk1 = fft(cxn1,nfft); Pxx1 = abs(CXk1); %布莱克曼窗自相关函数的傅里叶变换 cxn2 = xcorr(xn2); CXk2 = fft(cxn2,nfft); Pxx2 = abs(CXk2); %汉宁窗自相关函数的傅里叶变换 cxn3 = xcorr(xn3); CXk3 = fft(cxn3,nfft); Pxx3 cxn5 = xcorr(xn5); CXk5 = fft(cxn5,nfft); Pxx5 = abs(CXk5); index = 0:round(nfft/2-1); f = index*

    51110编辑于 2024-12-03
  • 16QAM调制的OFDM传输MATLAB仿真

    二、MATLAB仿真系统设计1.系统参数配置clear;clc;closeall;​%====================系统参数====================nFFT=1024;%FFT 大小(子载波总数)nCP=128;%循环前缀长度(保护间隔)nDataCarriers=800;%数据子载波数(实际使用子载波)nGuardCarriers=(nFFT-nDataCarriers)/2 nDataCarriers;ofdmSymbols(startIdx:endIdx,:)=symbolsGrouped;​%5.IFFT变换(时域转换)timeDomain=ifft(ofdmSymbols,nFFT noise;3.接收端设计%====================接收端处理====================%1.串并转换(恢复OFDM符号结构)rxSignal=reshape(rxSignal,nFFT +nCP,numSymbols);​%2.移除循环前缀(CP)rxNoCP=rxSignal(nCP+1:end,:);​%3.FFT变换(频域恢复)freqDomain=fft(rxNoCP,nFFT

    60510编辑于 2025-12-08
  • 来自专栏python全栈教程专栏

    【语音信号处理】短时傅立叶变换的频谱图详细教程

    调用格式如下: s = spectrogram(x,window,noverlap,nfft) 使用nfft采样点来计算离散傅立叶变换。 nftt: nfft— DFT 点数 DFT 点数,指定为正整数标量。 如果指定 nfft为空的,则 spectrogram设置参数到最大值(256,2 p),其中p =⌈log 2 Ñ瓦特⌉,所述⌈⌉符号表示上取整函数,并 N w = windowifwindow 是标量

    2.1K20发布于 2021-10-19
  • 来自专栏脑机接口

    SSVEP脑机接口及数据集处理

    ; t=(0:length(s2_1)-1)/1024; plot(t,s2_1) axis([t(1) t(end)+1 -5*max(s2_1) 5*max(s2_1)]); figure(2) NFFT = 2^nextpow2(length(s2_1)); f = 1024/2*linspace(0,1,NFFT/2+1); y=fft(s2_1,NFFT)/length(s2 _1); plot(f,abs(y(1:NFFT/2+1)),'r') axis([0 50 0 0.15]); 结果展示 <1>时域图 这个是第6个频率刺激下的时域图 <2>频域分析 通过对脑电波的频域分析

    1.1K10编辑于 2022-09-22
  • 来自专栏诸葛青云的专栏

    第一张黑洞照片全靠VLBI,这个Github项目教你用Python实现

    如需使用快速傅里叶变换,必须单独安装NFFT及其pynnft包装器。 最简单的方法是使用conda来安装: conda install -c conda-forge pynfft 或者,首先按照NFFT说明安装NFFT,**这里一定要确保在编译时使用**: --enable-openmp 然后再用pip安装pynfft,按照README的教程将安装链接到NFFT的位置;最后,重新安装ehtim。 pynfft的安装地址: GitHub - pyNFFT/pyNFFT: A pythonic wrapper around the NFFT library 注意事项 用于读写.oifits文件的oifits_new

    1.4K00发布于 2019-04-14
  • 来自专栏强化学习专栏

    脉冲幅度调制信号的功率谱计算

    *carrier; % window=boxcar(length(pam_signal)); nfft=1024; % [Pxx,f]=periodogram(pam_signal,window,nfft 海明窗 window2=blackman(100); %blackman窗 noverlap=20; %数据无重叠 [Pxx,f]=pwelch(pam_signal,window1,noverlap,nfft Fs,'centered','power'); plot_Pxx=10*log10(Pxx); [Pxx1,f1]=pwelch(modulated_signal,window1,noverlap,nfft

    35110编辑于 2024-12-03
  • 来自专栏云深之无迹

    为什么有斩波前端的 ADC 还是标有一个 1/f 的噪音值?(YUNSWJ 仿真版)

    0,避免发散 X_1f = Xw * H_1f x_1f = np.fft.irfft(X_1f, n=N) # 验证频谱: 估算两种噪声的 ASD def estimate_asd(x, Fs, nfft =16384): w = np.hanning(nfft) step = nfft // 2 segs = (len(x) - nfft) // step psd = np.zeros (nfft//2 + 1) for i in range(segs): seg = x[i*step:i*step+nfft] * w X = np.fft.rfft seg) psd += (np.abs(X)**2) / (Fs * np.sum(w**2)) psd /= segs freqs = np.fft.rfftfreq(nfft

    25010编辑于 2026-01-07
  • 来自专栏Gnep's_Technology_Blog

    雷达波形及MATLAB仿真

    predetermined % RCS for each target. c=3.0e8; % speed of light (m/s) num_pulses = n; SNR_dB = 40; nfft Hz (10MHz) V = v; % radial velocity (m/s) -- (+)=towards radar (-)=away PRI = 1. / prf; % (s) if (nfft > 2*num_pulses) num_pulses = nfft/2; else end Inphase = zeros((2*num_pulses),1); Quadrature = zeros

    89430编辑于 2023-11-14
领券