2016-03-28 79 views
0

我試圖乘以正弦波/餘弦波遞歸,但我不知道爲什麼我的答案如此不同。 Y2藍色就是我試圖讓,但FOR循環是Ÿ紅色是什麼產生的任何想法如何解決FOR循環ÿ?看下面的情節和代碼?在一個循環中遞增乘以正弦波/餘弦波在matlab /倍頻程中

Fs = 8000;% Sampling frequency 
t=linspace(0,1,Fs); 

y=zeros(1,length(t)); 
y = .5*sin(2*pi*2*t); 
for ii=1:1:3  
    y=y.*y; 
end 
plot(y,'r') 
hold on 

y2=(.5*sin(2*pi*2*t)).* (.5*sin(2*pi*2*t)).*(.5*sin(2*pi*2*t)); %should look like this 
plot(y2,'b') %both plots should look like this 

Plot PS:我使用的是八度3.8.1這就好比MATLAB

+0

你'for'循環是好的,但你的想法是錯誤的。 ;) –

回答

3

你在這裏乘以八倍

y = .5*sin(2*pi*2*t); 
for ii=1:1:3  
    y=y.*y; 

ii=1:1:3是包容性的,所以你做y=y.*y三次。

第一次變得Y = Y^2,

第二時間之成爲Y 1 4 = Y^2 * Y * 2

它變成:Y^8 = Y^4 * Y第三時間^ 4


這將是一個解決方案:

Fs = 8000;% Sampling frequency 
t=linspace(0,1,Fs); 

y=zeros(1,length(t)); 
y = .5*sin(2*pi*2*t); 
result = ones(1,length(t)); 
for ii=1:1:3 
    result=result.*y; 
end 
plot(result,’r’) 
hold on 

y2=(.5*sin(2*pi*2*t)).* (.5*sin(2*pi*2*t)).*(.5*sin(2*pi*2*t)); %should look like this 
plot(y2,'b') %both plots should look like this 
2

在所有的迭代,Y * Y作更新Y的平方。

Fs = 8000;% Sampling frequency 
t=linspace(0,1,Fs); 

y=ones(1,length(t)); 
x = .5*sin(2*pi*2*t); 
for ii=1:1:3  
    y=y.*x; 
end 
plot(y,'r') 
hold on 

y2=(.5*sin(2*pi*2*t)).* (.5*sin(2*pi*2*t)).*(.5*sin(2*pi*2*t)); %should look like this 
plot(y2,'b') %both plots should look like this 

也許您想要這樣的代碼。

+2

至少在Matlab中,你甚至可以簡化爲'y = y。^ 3;'。他做錯的一個解釋也是很好的。 ;) –