日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab resample上采样,resample matlab实现

發布時間:2023/12/3 循环神经网络 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab resample上采样,resample matlab实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用線性插值實現sample rate轉換。

function output = simpleResample(input, inputfs, outputfs)

inputLen = length(input(:, 1));

outputLen = floor(inputLen * outputfs / inputfs);

output = zeros(outputLen, 1);

timeStep = inputfs / outputfs;

curTime = 1;

integer = 0;

frac = 0;

for i = 1:1:outputLen

integer = floor(curTime)

frac = curTime - floor(curTime);

if integer + 1 < inputLen

output(i, 1) = input(integer, 1) + frac * ( input(integer + 1, 1) - input(integer, 1));

end

curTime = curTime + timeStep;

end

win = fir1(13, 0.6, 'low')

output = filter(win, 1, output);

end

使用sinc window實現sample rate轉換,可能sinc window 沒有設計好,效果不是很好。

function ouput = myResample( input, inputfs, outputfs)

inputLen = length(input(:, 1));

outputLen = floor(inputLen * outputfs / inputfs);

output = zeros(outputLen, 1);

timeStep = inputfs / outputfs;

factor = outputfs / inputfs;

L = 8;%entries per zero-crossing

Nz = 7;%number of zero-crossing

winLen = 2 * L * Nz + 1;

filterInt = 4;

filterLen = floor(winLen / filterInt);

%generate sinc window function

for i = ceil(-winLen/2) :1 : floor(winLen/2)

winIdx = i + floor(winLen/2) + 1;

tmp = pi * double(i) / L;

if i == 0

win(winIdx) = 1;

else

win(winIdx = sin(tmp)/tmp;

end

end

win = win * 0.6;

%add delay before input

delaySample = floor(filterLen / 2);

delayInput = zeros(inputLen + delaySample, 1);

delayInput(delaySample + 1 : inputLen + delaySample, 1) = input(:, 1);

curTime = 1;

t = 1;

pos = 1;

for t = 1:1:outputLen

integer = floor(curTime)

frac = curTime - floor(curTime);

filtOfsset = floor(frac * filterInt);

if integer + filtLen - 1 < inputLen + delaySample

pos = integer;

winStart = floor(winLen / 2 - filterInt * filterLen / 2) - 1;

winEnd = floor(winLen /2 + filterInt * filterLen / 2);

%filter by sinc window

for j = winStart : 1 : winEnd

if j - filtOffset < 1

winCoeff = 0;

else

winCoeff = win(j - filtOffset);

end

output(t, 1) = output(t, 1) + winCoeff * delayInput(pos, 1);

pos = pos + 1;

end

end

curTime = curTime + timeStep;

end

end

總結

以上是生活随笔為你收集整理的matlab resample上采样,resample matlab实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。