
matlab中累加表达式如何编写
4个回答
展开全部
主函数:
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
>>
希望帮到你!
展开全部
建立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
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
本回答被提问者采纳

你对这个回答的评价是?
展开全部
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
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编译不过,而且代码中没看见累加呀,只是在生成循环数组
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
需要用点乘,然后需要累加
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
需要用点乘,然后需要累加
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询