计算扇贝损失的函数
Function to compute Scallop Loss
我想创建一个函数,使用 Scallop 损失公式计算 Rectangular、Hamming 和 Blackman window 的 Scallop 损失值。
我创建了一个函数,但它只有 returns 回答 0,我是不是出错了?
function s_l = scallop loss(len)
window = rectwin(len);
num_total = 0;
den_total = 0;
for n = 0:len-1
A1 = exp(-((1i*(n)*pi)/len));
A2 = window(n+1)*A1;
num = abs(A2);
den = win(n+1);
num_total = num_total + num;
den_total = den_total + den:
end
result = 20*log(num_total/den_total);
s_l = result;
你有一道数学题:
abs(sum(A)) != sum(abs(A))
它们不一样!
将您的代码更改为:
window = rectwin(len);
num_total = 0;
den_total = 0;
for n = 0:len-1
A1 = exp(-((1i*(n)*pi)/len));
A2 = window(n+1)*A1;
num = A2; % !!
den = abs(window(n+1)); % you also forgot the abs here
num_total = num_total + num;
den_total = den_total + den;
end
num_total=abs(num_total); % !!
result = 20*log(num_total/den_total);
s_l = result;
请将 log() 函数更改为 log10()。没有它,结果是完全错误的:)
我的意思是这一行:
结果 = 20*log10*(num_total/den_total);
我想创建一个函数,使用 Scallop 损失公式计算 Rectangular、Hamming 和 Blackman window 的 Scallop 损失值。 我创建了一个函数,但它只有 returns 回答 0,我是不是出错了?
function s_l = scallop loss(len)
window = rectwin(len);
num_total = 0;
den_total = 0;
for n = 0:len-1
A1 = exp(-((1i*(n)*pi)/len));
A2 = window(n+1)*A1;
num = abs(A2);
den = win(n+1);
num_total = num_total + num;
den_total = den_total + den:
end
result = 20*log(num_total/den_total);
s_l = result;
你有一道数学题:
abs(sum(A)) != sum(abs(A))
它们不一样!
将您的代码更改为:
window = rectwin(len);
num_total = 0;
den_total = 0;
for n = 0:len-1
A1 = exp(-((1i*(n)*pi)/len));
A2 = window(n+1)*A1;
num = A2; % !!
den = abs(window(n+1)); % you also forgot the abs here
num_total = num_total + num;
den_total = den_total + den;
end
num_total=abs(num_total); % !!
result = 20*log(num_total/den_total);
s_l = result;
请将 log() 函数更改为 log10()。没有它,结果是完全错误的:)
我的意思是这一行: 结果 = 20*log10*(num_total/den_total);