matlab 音乐合成出错,clear;clc;A=[174.61 196 220 246.94 261.62 293.66 329.63 349.23 392 440 493.88 523.25 587.33 659.25 698.45 739.99 783.99]; % 定义各调频率fs=8000; %修改频率pu=[5 0 -5 5 4 3 3 4 3 3 3 4 3 4 3 2 1 0 1 3 5 6 6 6 5 5 2 2

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/11 02:32:16
matlab 音乐合成出错,clear;clc;A=[174.61 196 220 246.94 261.62 293.66 329.63 349.23 392 440 493.88 523.25 587.33 659.25 698.45 739.99 783.99]; % 定义各调频率fs=8000; %修改频率pu=[5 0 -5 5 4 3 3 4 3 3 3 4 3 4 3 2 1 0 1 3 5 6 6 6 5 5 2 2
xU[OF+Ӈ8b*@+C-bNUaYXP庂&P-xgfҨ-h<399c ,r.j˭rˎƓqeJYB@bH%D$A^PPy)!aE P A^ pdN#|(2/h8(zp}j>f)& %@iJI2F(dH>#gtt&/A f %$Tըҩ{lc`s׶98`5Wo&q[ o*.b0 9ŶZ+ {ZɘaNZJUt##??`yCĀ~1k}a5Z9is*UjoѤTs=enj6cxn+!]e&4Ed;U&f/ S5qBxr,xcCM2>3ZTPO{vm}qRjdfXr] 1̷bkڏ'b,Q=.o%1^N { s) `.59ugVS9dVpQ\uyFu+.}a(?a⁳^ؑGC9?h #w!yR#o}W1Gҵ ,2_uCc}*#Kzey/5rYFb{ZKLyqږi)TgAx\5 4!iY'&QQ C3UPꜚEdfNǒsay|^E_uo@W<]{+%?/4 %Bk=J|ǂX[gIߗ/L{!%y5 0*'\: =#e'-k

matlab 音乐合成出错,clear;clc;A=[174.61 196 220 246.94 261.62 293.66 329.63 349.23 392 440 493.88 523.25 587.33 659.25 698.45 739.99 783.99]; % 定义各调频率fs=8000; %修改频率pu=[5 0 -5 5 4 3 3 4 3 3 3 4 3 4 3 2 1 0 1 3 5 6 6 6 5 5 2 2
matlab 音乐合成出错,
clear;clc;
A=[174.61 196 220 246.94 261.62 293.66 329.63 349.23 392 440 493.88 523.25 587.33 659.25 698.45 739.99 783.99]; % 定义各调频率
fs=8000; %修改频率
pu=[5 0 -5 5 4 3 3 4 3 3 3 4 3 4 3 2 1 0 1 3 5 6 6 6 5 5 2 2 4 3 3]; %在pu中只需输入乐谱数字,在下面B=A-什么什么那部分调整音调,省去了写频率的麻烦
p=1;
last_time=[p p/2 p/2 p/2 p/2 p/2 p/4 p/8 p/8 p/2 p/4 p/4 p/4 p/4 p/4 p/8 p/8 p/4 p/4 p/4 p/4 p/2 p/4 p/8 p/8 p/4 p/4 p/4 p/8 p/8 p];
%各乐音持续时间为节省空间,用p代替
N=length(pu);
f=zeros(1,N);
B=A-9;
for i=1:N
f(i)=B(pu(i)); %f为各个乐音对应的频率,修改其它调
end
point=fs*last_time; %各个乐音的抽样点数
total_point=sum(point); %这段音乐的总抽样点数
store=zeros(1,total_point); %用store向量来储存抽样点
m=1;
for num=1:N %利用循环产生抽样数据,num表示乐音编号
t=1/fs:1/fs:point(num)/fs; %产生第num个乐音的抽样点
store(m:m+point(num)-1)=sin(2*pi*f(num)*t); %抽样点对应的幅值
m=m+point(num);
end
sound(store,8000); %播放出store
plot(store); %画出store图像
运行后出错:
Attempted to access B(0); index must be a positive integer or logical.
Error in ==> sound_2_1 at 12
f(i)=B(pu(i)); %f为各个乐音对应的频率,修改其它调
我知道错哪了,现在又不知道怎么改.pu=[5 0 -5 5 4 3 3 4 3 3 3 4 3 4 3 2 1 0 1 3 5 6 6 6 5 5 2 2 4 3 3]; 中,0对应的是简谱的 0,-5对应的是低八度的5 .怎么破!

matlab 音乐合成出错,clear;clc;A=[174.61 196 220 246.94 261.62 293.66 329.63 349.23 392 440 493.88 523.25 587.33 659.25 698.45 739.99 783.99]; % 定义各调频率fs=8000; %修改频率pu=[5 0 -5 5 4 3 3 4 3 3 3 4 3 4 3 2 1 0 1 3 5 6 6 6 5 5 2 2
当i=2时,pu(i)=0,B是一个矩阵,下标最小从1开始,不存在B(0),因此B(pu(i))出错
我知道错哪了,现在又不知道怎么改.pu=[5 0 -5 5 4 3 3 4 3 3 3 4 3 4 3 2 1 0 1 3 5 6 6 6 5 5 2 2 4 3 3]; 中,0对应的是简谱的 0,-5对应的是低八度的5 .怎么破!?
把A(1)~A(12)改为简谱的-5~6的频率,然后对应频率选择对应下标即可