matlab中累加表达式如何编写

如题所述

主函数:

clc;clear all
x=1:1:10000;
a=f_summary(x)

函数:

function a=f_summary(x)
N=length(x);
a=0;
n=1;
for k=1:N-1
    a=a+(x(k+1)-x(k))*sin(2*k*n*pi/N);
end
a=a*2/N/(2*sin(pi/N));
end

结果:

a =

   1.3979e-14

>>

希望帮到你!

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-16
建立m函数文件MDCT.m
function X=MDCT(x)
% X输出改进的离散余弦变换的值
% x输入向量
[m,n]=size(x);
if m~=1&n~=1
error('请输入向量!');
return;
end
M=length(x(:)); %向量x的长度
for n=0:1:floor((M/2-1))
k=0:(M-1);
X(n+1)=sum(sin(pi*(n+1/2)/M)*x(k+1).*cos(pi*(n+1/2+M/2)*(k+1/2)/M));%w(k)设定为sin(pi*(n+1/2)/M)
end

主窗口进行测试
>> x=[1 2 3 4];
>> X=MDCT(x)
X =
0.9587 -2.1663本回答被提问者采纳
第2个回答  2013-08-16
for n=0:M/2-1
for k=0:M-1
X(n)=w(k)*x(k)*cos(pi/(2*M)*(2*k+1+M/2)*(2*n+1));
end
end追问

matlab编译不过,而且代码中没看见累加呀,只是在生成循环数组

第3个回答  2013-08-16
for n=0:M/2-1
X(n)=0;
for k=0:M-1
X(n)=X(n)+w(k).*x(k).*cos(pi/(2*M).*(2*k+1+M/2)*(2*n+1));
end
end
需要用点乘,然后需要累加