我使用八度3.8.1,它的工作方式像matlab。For循环方程成Octave/Matlab代码
我有数千值的阵列我只包括三组,如下一个例子:
(AMP1 = 0.2; FREQ1 = 3;阶段1 = 1;是一个分组的一个例子)下面
t=0;
amp1=0.2; freq1=3; phase1=1; %1st grouping
amp2=1.4; freq2=2; phase2=1.7; %2nd grouping
amp3=0.8; freq3=5; phase3=1.5; %3rd grouping
的倍频/Matlab的代码解决了ý所以可以将它放回方程与不位于我计算值一起检查值在阵列中。
clear all
t=0;
Y=0;
a1=[.2,3,1;1.4,2,1.7;.8,5,1.5]
for kk=1:1:length(a1)
Y=Y+a1(kk,1)*cos ((a1(kk,2))*t+a1(kk,3))
kk
end
Y
PS:我不是想解决Y的,因为它已经解决了,我想解决阶段
位于下面的公式来计算阶段但我不知道如何把它变成一个for循环,将在阵列工作ň分组:
如果我想找到freq = 2.5和amp = .23,并且相位未知,我将如何编写公式/ for循环找到相位我已经在线查看并且可能需要编写非线性方程式,不知道如何将我想要做的事转换成这样的等式。下面式
phase1_test=acos(Y/amp1-amp3*cos(2*freq3*pi*t+phase3)/amp1-amp2*cos(2*freq2*pi*t+phase2)/amp1)-2*freq1*pi*t
phase2_test=acos(Y/amp2-amp3*cos(2*freq3*pi*t+phase3)/amp2-amp1*cos(2*freq1*pi*t+phase1)/amp2)-2*freq2*pi*t
phase3_test=acos(Y/amp3-amp2*cos(2*freq2*pi*t+phase2)/amp3-amp1*cos(2*freq1*pi*t+phase1)/amp3)-2*freq2*pi*t
我想做一次检查/计算阶段,如果给定的一个频率和安培值。
我知道我必须为循环做了,但我怎么了阶段公式转换为一个循环,因此会在数组上ň分组工作,并计算在阵列中没有发现不同的值?
基本上我将给出Ñ分组和FREQ = 2.5和安培= 0.23,并使用下式的阵列来计算相。注意:freq不会总是在数组中,因此我试图使用公式计算阶段。