在matlab / octave的循环中递归地乘以sin波/ cos波

时间:2016-03-28 07:48:30

标签: matlab for-loop recursion octave trigonometry

我试图递归地增加sin波/余弦波,但我不确定为什么我的答案如此不同。 蓝色中的 Y2 是我想要的,但红色 Y 的FOR循环是什么任何想法如何修复FOR循环 Y ?看下面的情节和代码?

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:我正在使用octave 3.8.1,就像matlab

2 个答案:

答案 0 :(得分: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 ^ 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

答案 1 :(得分: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

也许,你想要这个代码。