我使用八度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不會總是在數組中,因此我試圖使用公式計算階段。