- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想计算矩阵的下一个 n
相邻元素的乘积。要相乘的元素的数量 n
应该在函数的输入中给出。例如,对于此输入,我应该从第一个开始计算每 3 个连续元素的乘积。
[p, ind] = max_product([1 2 2 1 3 1],3);
这给出 [1*2*2, 2*2*1, 2*1*3, 1*3*1] = [4,4,6,3]
。
有什么实用的方法吗?现在我使用:
for ii = 1:(length(v)-2)
p = prod(v(ii:ii+n-1));
end
其中 v
是输入向量,n
是要相乘的元素数。
在此示例中 n=3
但可以取任何正整数值。
根据 n
是奇数还是偶数或者 length(v)
是奇数还是偶数,我有时会得到正确的答案,但有时会得到错误的答案。
例如参数:
v = [1.35912281237829 -0.958120385352704 -0.553335935098461 1.44601450110386 1.43760259196739 0.0266423803393867 0.417039432979809 1.14033971399183 -0.418125096873537 -1.99362640306847 -0.589833539347417 -0.218969651537063 1.49863539349242 0.338844452879616 1.34169199365703 0.181185490389383 0.102817336496793 0.104835620599133 -2.70026800170358 1.46129128974515 0.64413523430416 0.921962619821458 0.568712984110933]
n = 7
我得到错误:
Index exceeds matrix dimensions.
Error in max_product (line 6)
p = prod(v(ii:ii+n-1));
有什么正确的通用方法吗?
最佳答案
基于 Fast numpy rolling_product 中的解决方案,我想推荐它的一个 MATLAB 版本,它利用了 movsum
R2016a中引入的功能。
数学推理是数字的乘积等于它们的对数和的指数:
上述内容的可能 MATLAB 实现可能如下所示:
function P = movprod(vec,window_sz)
P = exp(movsum(log(vec),[0 window_sz-1],'Endpoints','discard'));
if isreal(vec) % Ensures correct outputs when the input contains negative and/or
P = real(P); % complex entries.
end
end
movsum
提供的任何其他定制。 .double
或complex double
row 向量。关于arrays - 计算数组中接下来的 n 个元素的乘积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39317904/
我有一个模型,我想为其检索下一条记录和上一条记录。我想通过模型上的 named_scope 来执行此操作,并且还将要返回的下一个/上一个记录的 X 数作为参数传入。 例如,假设我有 5 条记录: 记录
我有以下数据框: print(df) day month year quantity 6 04 2018 10 8
我在这个网站上看到过这样的问题;但他们只是提供生日数据而不提供计数例如:mysql query to get birthdays for next 10 days SQL Select Upcomin
我有以下数据框: print(dd) dt_op quantity product_code 20/01/18 1 613 21/01/18 8
Julia 中的迭代可以通过实现具有 3 个函数的迭代接口(interface)来为新定义的类型实现:start , next , done 我在这些函数的末尾没有看到感叹号,所以根据我对 julia
我正在阅读 clojure 中关于 rest 与 next 的解释。据我了解,它分解为 next 评估/实现序列的尾部,知道它是否应该返回nil,而rest总是返回序列,所以它更懒。 但是,我不明白的
早上好 我有以下数据框: a = [1,2,3,4,5,6] b = pd.DataFrame({'a': a}) 我想创建一个列,对“a”列的下“n”行求和,包括 a 的现值;我试过: n =
编写一个可以迭代任何可迭代对象的通用函数,返回现在,下一对。 def now_nxt(iterable): iterator = iter(iterable) nxt = iterat
我正在尝试显示接下来 5 分钟的剩余时间(捕捉到当前时间的完整 5 分钟,例如 15:05、15:10..) 我能够在下一个小时(而不是分钟)的剩余时间内实现相同的目标: function sec
我想捕获用户在接下来的 2 小时内执行的步数。 这就是我要说的。 Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.H
我有一个如下所示的 DataFrame: ds y 0 2017-02-07 0.154941 1 2017-02-08 0.110595 2
我想通过集合分析计算过去 2 个值的总和 + 当前值 + 接下来的 2 个值。 无论是否使用集合分析,它都按预期工作。无论有无集分析 ( "{}" ),它都按预期工作。但是当缩放时,图形的值会相应地发
我有一个大数据集,低于训练和测试数据集 train_data是从2016-01-29到2017-12-31 head(train_data) date Date_t
另一个“如何删除上一个、下一个、完成按钮”-您可能会想的问题。实际上不是。我对此进行了相当深入的研究,并尝试了不同的方法,但似乎没有任何方法或解决方案能真正做到这一点。下面提到和显示的所有解决方法(就
我是一名优秀的程序员,十分优秀!