Matlab 计算扇贝损失的函数

Matlab 计算扇贝损失的函数,matlab,signal-processing,windowing,Matlab,Signal Processing,Windowing,我想做一个函数,用扇形损耗公式计算矩形、汉明和布莱克曼窗口的扇形损耗值。 我创建了一个函数,但它只返回答案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

我想做一个函数,用扇形损耗公式计算矩形、汉明和布莱克曼窗口的扇形损耗值。 我创建了一个函数,但它只返回答案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;

你有一道数学题:

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*(总数量/总数量)

请将log()函数更改为log10()。没有它,结果是完全错误的:)

我是说这句话:
结果=20*log10*(总数量/总数量)

Len是
N
?什么是
w
?您不应该在函数中为
w[n]
添加另一个输入吗?您的代码返回一个错误
win
未定义。你能把运行的真正代码放进去吗?Len是
N
?什么是
w
?您不应该在函数中为
w[n]
添加另一个输入吗?您的代码返回一个错误
win
未定义。你能把真正运行的代码放进去吗?