arrays - 将数字列表输入求和公式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 中做到这一点 --> 求解完整总和
解决方案
我将数据减少到您的前三个数据点
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)
,我需要x
和P
(不应该是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");
推荐阅读
- javascript - 我需要在反应组件的列表中创建一个按钮
- python - Dynamic Generator in Python
- vimeo - Vimeo player restful api 文档
- swift - Apple Music API 不让我获取用户令牌 - 引发未知错误
- python - 用户通过 chrome 自动登录时出现“会话匹配查询不存在”错误
- python - Python中随机函数的总结结果
- python - 当我们增加子图的数量时,为什么我的图形标题会移动?
- css - 将引导样式应用于 react-day-picker 中的 DayPickerInput
- swift - Realm 中的 LinkingObjects 没有初始化程序的代码完成(XCode 12,Swift 5)
- c++ - 从以 const 范围作为参数的函数返回的值