【发布时间】:2015-10-31 15:59:06
【问题描述】:
我使用的是 octave 3.8.1,它的工作原理类似于 matlab。
我有一个包含数千个值的数组,我只包含了三个分组作为下面的示例:
(amp1=0.2;freq1=3;phase1=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
下面的 Octave / Matlab 代码求解 Y,因此我可以将其插回方程以检查值以及计算未计算的值位于数组中。
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,因为它已经解决了,因为我正在尝试解决 Phase
下面的公式用于计算 Phase,但我不知道如何将它放入一个 for 循环中,该循环将在 数组中工作n 个分组:
如果我想找到 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 和 amp 值,我想检查/计算相位。
我知道我必须做一个 for 循环,但是如何将 phase 方程转换为一个 for 循环,以便它可以在数组 n 分组 上工作>并计算数组中没有的不同值?
基本上我会得到一个 n 分组 和 freq=2.5 和 amp=.23 的数组,并使用公式来计算 阶段。注意:freq 并不总是在数组中,因此我尝试使用公式计算 phase。
【问题讨论】:
标签: matlab function for-loop octave