博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
matlab 函数 向量参数,Scipy integrate(quad,quadration,nquad)不能集成向量参数化函数?等效函数(MATLAB works)...
阅读量:1533 次
发布时间:2019-04-21

本文共 1416 字,大约阅读时间需要 4 分钟。

我正在将一些代码从MATLAB转换为python,并且正在努力获得一个函数,该函数以数组参数(作为参数)来使用Scipy进行集成。在

我已经将代码简化为一个在Scipy中产生相同错误的基本示例,而等效的MATLAB代码的功能与预期相同。在

我试图将长度为m的行向量参数参数参数和长度为N的列向量参数参数参数传递给被集成在另一个单独的积分参数上的函数,期望我的集成输出将具有MxN的形状。在

以下python代码会产生此错误:File "C:\Anaconda3\lib\site-packages\scipy\integrate\quadrature.py", line 196, in quadrature

if err < tol or err < rtol*abs(val):

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

^{pr2}$

等效的MATLAB代码(输出MxN形状的结果)是c = [1, 2];

r = transpose([2, 1]);

out = integral(@(p)intgd(p, r, c), -pi/2, pi/2, 'ArrayValued', true);

function intgd = intgd(p, r, c)

c_bcr = repmat(c, length(r), 1);

r_bcc = repmat(r, 1, length(c));

A = ones(length(r), length(c));

s = sin(r_bcc) - sin(p);

A(s ~= 0) = sin(c_bcr(s ~= 0).*s(s ~= 0))./(c_bcr(s ~= 0).*s(s ~= 0));

intgd = 1./fun(p, c).^2.*(A.^2);

end

function d = fun(p, c)

p1 = zeros(1, length(c));

mask = sqrt(pi./(2*c)) < 1;

p1(mask) = acos(sqrt(pi./(2*c(mask))));

d = zeros(1, length(c));

mask = abs(p) <= p1;

d(mask) = 1./(pi./(2*c(mask).^2) + cos(p));

mask = and(abs(p) > p1, abs(p) <= pi/2);

d(mask) = 1./(pi./(2*c(mask).^2) + ((cos(p1(mask)) - cos(p))./2));

end

上面的MATLAB输出out是[6.58727018139280, 0.963083280848789;

6.78600314283299, 1.05994693990888]

我不确定scipy.integrate.quadrature是如何处理通过它的对象的维度的,但想法是它应该产生相同的MxN输出。在

我知道numpy有它自己的内置广播,通常可以避免这里所示的显式广播的需要,但我不确定它如何处理m=N的数组,如本例中所示,因此我将其保持为显式。任何关于这个次要问题的建议也将是受欢迎的。在

转载地址:http://baddy.baihongyu.com/

你可能感兴趣的文章
dell r340安装window和linux
查看>>
OGG-14036 Schema is required for heartbeattable : gg_heartbeat.
查看>>
OGG-05673 CSN-based duplicate suppression is disabled because there is no checkpoint table for this
查看>>
19c多租户ogg微服务命令行查看参考
查看>>
【Python】【Python语言】Python3.7.2的关键字与保留字
查看>>
拆解老古董:一台60年代的双矿石收音机
查看>>
美敦力公开呼吸机,开发环境为Keil + ST10F276(STM32前身)
查看>>
TIOBE 4 月榜单 C 和 JAVA 几乎持平
查看>>
讲真,WiFi 6到底6在哪儿
查看>>
简单上手GDB调试
查看>>
ARMv8-M相比ARMv7-M架构优势在哪里?
查看>>
PCB差分信号设计中的3个常见误区
查看>>
进程和线程常见的19个问题
查看>>
Keil MDK 和 IAR EARM发展历程及历史版本下载
查看>>
精选汇总 | 嵌入式软件基础知识
查看>>
为什么大家都看好RISC-V
查看>>
Keil MDK利用 fromelf 实现axf 转 bin 的方法
查看>>
【APICloud系列|12】ios真机调试时如何添加新设备的udid?
查看>>
前端开发必备的1个CSS框架
查看>>
【APICloud系列|13】移动端适配通揽
查看>>