matlab - 为什么我不能用复数得到 intdump 的结果
问题描述
我需要在这样的间隔内获得一列的积分,但结果很奇怪。
我使用功能intdump
。例如,假设我有一列 16 行 1 列,我需要对intdump
4 取积分并转储,这意味着结果将是 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 会返回完美的结果。我不为什么你期望不同的结果,但那些不是intdump
应该返回的。
另一种计算方法是利用积分算子的线性特性。确实你有:
积分(A + iB) = 积分(A) + i*积分(B)
所以在你的情况下,你可以分开实部和虚部h
Y_temp = intdump([real(h) imag(h)],4);
Y = Y_temp(:,1)+i*Y_temp(:,2)
推荐阅读
- ios - 斯威夫特:做一个很短的振动
- python - 如何检查python selenium中是否存在ext-gen元素
- javascript - 使用 useEffect() 重定向不起作用?
- eviews - 线性回归 - 在 Eviews 中存在异方差的情况下测试多重共线性
- java - 如何在构建时从 Gradle 运行 Java 代码
- django - 注册页面错误中的 django 身份验证:分配前引用了“局部变量”用户“
- css - CSS 两个预加载器导致问题
- ruby-on-rails - 在构建自定义生成器时使用局部变量
- vim - 按上下文列出 vim 选项,而不是按字母顺序
- c# - 在 dotnet core web api 上使用 https