为什么我不能得到带有复数的 intdump 的结果
Why I can't get the results of intdump with complex numbers
我需要在这样的区间内求列的积分,但结果很奇怪。
我使用函数intdump
。例如,假设我有一列 16 行 1 列,我需要对 4 进行积分和转储 intdump
,这意味着结果将是 4 行 1 列,但结果很奇怪.
比如我有数据:
h = [
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.7071 + 0.7071i
-0.7071 + 0.7071i
-0.7071 + 0.7071i
0.7071 + 0.7071i];
当我使用命令 Y = intdump(h,4);
时,我得到以下结果:
Y =
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.7071i
但是,预期的结果必须如下所示:
Y =
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.7071 + 0.7071i
拜托,有人可以支持那个问题吗?
可能你不明白intdumb
是做什么的以及预期的结果是什么。
当您询问 Y = intdump(h,4);
时,您需要对 4 个样本的每个周期执行平均积分。换句话说,您将数据按 4 个样本重新组合,求和,然后将结果除以 4。
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
----------------
(0.0000 + 0.0000i) / 4 = 0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
----------------
(0.0000 + 0.0000i) / 4 = 0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
----------------
(0.0000 + 0.0000i) / 4 = 0.0000 + 0.0000i
0.7071 + 0.7071i
-0.7071 + 0.7071i
-0.7071 + 0.7071i
0.7071 + 0.7071i
----------------
(0.0000 + 2.8284i) / 4 = 0.0000 + 0.7071i
所以 Matlab return 的完美结果。我不明白为什么你会期待不同的结果,但这些不是 intdump
应该 return。
另一种计算方法是利用积分运算符的线性特性。你确实有:
积分(A + iB) = 积分(A) + i*积分(B)
因此在您的情况下,您可以将 h
的实部和虚部分开
Y_temp = intdump([real(h) imag(h)],4);
Y = Y_temp(:,1)+i*Y_temp(:,2)
我需要在这样的区间内求列的积分,但结果很奇怪。
我使用函数intdump
。例如,假设我有一列 16 行 1 列,我需要对 4 进行积分和转储 intdump
,这意味着结果将是 4 行 1 列,但结果很奇怪.
比如我有数据:
h = [
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.7071 + 0.7071i
-0.7071 + 0.7071i
-0.7071 + 0.7071i
0.7071 + 0.7071i];
当我使用命令 Y = intdump(h,4);
时,我得到以下结果:
Y =
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.7071i
但是,预期的结果必须如下所示:
Y =
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.7071 + 0.7071i
拜托,有人可以支持那个问题吗?
可能你不明白intdumb
是做什么的以及预期的结果是什么。
当您询问 Y = intdump(h,4);
时,您需要对 4 个样本的每个周期执行平均积分。换句话说,您将数据按 4 个样本重新组合,求和,然后将结果除以 4。
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
----------------
(0.0000 + 0.0000i) / 4 = 0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
----------------
(0.0000 + 0.0000i) / 4 = 0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
----------------
(0.0000 + 0.0000i) / 4 = 0.0000 + 0.0000i
0.7071 + 0.7071i
-0.7071 + 0.7071i
-0.7071 + 0.7071i
0.7071 + 0.7071i
----------------
(0.0000 + 2.8284i) / 4 = 0.0000 + 0.7071i
所以 Matlab return 的完美结果。我不明白为什么你会期待不同的结果,但这些不是 intdump
应该 return。
另一种计算方法是利用积分运算符的线性特性。你确实有:
积分(A + iB) = 积分(A) + i*积分(B)
因此在您的情况下,您可以将 h
Y_temp = intdump([real(h) imag(h)],4);
Y = Y_temp(:,1)+i*Y_temp(:,2)