首页 > 解决方案 > 将数字列表输入求和公式MATLAB

问题描述

我有一长串这样的特征:

{freq: 0, amp: 1154.6588660054892, phase: 0.6811527708352859}
{freq: 1, amp: 233.76302050080815, phase: -2.277730816435749}
{freq: 2, amp: 143.2507105748049, phase: -1.6688604056674772}
{freq: 3, amp: 61.34267912110249, phase: -1.407276624718863}
{freq: 4, amp: 69.82165621191676, phase: 0.4484639726070131}
{freq: 5, amp: 124.7089820392834, phase: -2.69715415885439}
{freq: 6, amp: 98.10782045873147, phase: -2.257663813503815}
{freq: 7, amp: 45.692851840698864, phase: 2.0834837932685986}
{freq: 8, amp: 13.755486310098496, phase: -0.9882950412130524}
{freq: 9, amp: 37.04634258561415, phase: 1.0277190546903878}
{freq: 10, amp: 57.320618660063865, phase: 0.9419518346957391}
{freq: 11, amp: 5.566488239052793, phase: -1.1325389453638341}
{freq: 12, amp: 4.611944397255416, phase: 0.14233997398390724}
{freq: 13, amp: 66.65783488521923, phase: -1.592500420430998}
{freq: 14, amp: 28.96466186646502, phase: 2.507516417595699}
{freq: 15, amp: 49.2744858240047, phase: 2.7774600258970668}
{freq: 16, amp: 10.210149563013712, phase: -0.978331488766217}
{freq: 17, amp: 16.59276204808539, phase: -2.4968547381563684}
...

在一个excel文件中。这些数字中的每一个都描述了以下等式中 Cn 的一部分:

在此处输入图像描述

Cn 是一个复数,表示如下:

[amp]*e^(pi*i*[phase])

其中 [Freq] 是公式中的 n

因此,数字列表进入此 Cn。

这个来自 3D1B 的视频以易于理解的方式详细描述了这里讨论的概念。(14 分钟 - 24 分钟)

我如何计算 Sn(x)。所以它会是

C0*e^[i*pi*((0))*x]/P + C1*e^[i*pi*((1))*x]/P + C2*e^[i*pi*((2))*x]/P

=在我的情况下使用上面的数据:

[1154]*e^(pi*i*[0.68])*e^[i*pi*((0))*x]/P + [233]*e^(pi*i*[-2.27])*e^[i*pi*((1))*x]/P + [143]*e^(pi*i*[1.66])*e^[i*pi*((2))*x]/P....... until my data is done

目标:我如何在 matlab 中做到这一点 --> 求解完整总和

在此处输入图像描述

标签: arraysmatlab

解决方案


我将数据减少到您的前三个数据点

amp = [1154.6588660054892, 233.76302050080815, 143.2507105748049];
phase = [0.6811527708352859, -2.277730816435749, -1.6688604056674772];

你可以这样计算cn

cn = amp .* exp(pi* 1j * phase);

这只是freq三个数据点的向量:

n = 0:numel(amp)-1;

为了计算Sn(x),我需要xP(不应该是S_n(x,P)?)[更新使用向量x]:

x = 0:.5:30;
P = 18;

并且Sn(x)可以简单地在循环中计算:


Sn = zeros(size(x));
for idx = 1:numel(x)
    Sn(idx) = sum(cn.*exp(1j*pi.*n*x(idx)/P));
end

情节Sn

plot3(real(Sn), imag(Sn), x);

xlabel("real(S_n)");
ylabel("imag(S_n)");
zlabel("time");

在此处输入图像描述


推荐阅读