如何在MATLAB中正确设置数值积分?

我想整合这个表达式: 但是我似乎在设置功能时遇到了问题。正如本MATLAB解释中所述,我已经定义了一个名为'NDfx.m'的独立函数,如下所示:
    function [ y ] = NDfx(x)

    y = (1/sqrt(2*pi))*exp(-.5*x^2); % Error occurs here

    end
但是当我在我的main函数中调用它时,我在上面的注释行中收到错误。我的主要功能如下:
function[P] = NormalDistro(u,o2,x)

delta = x-u;
dev = abs((delta)/o2);           % Normalizes the parameters entered into function
P_inner = quad(@NDfx,-dev,dev);  % Integrates function NDfx from -dev to dev (error here)
P_outer = 1 - P_inner;           % Calculation of outer bounds of the integral

if delta > 0
    P = P_inner + (P_outer/2);

elseif delta < 0
    P = P_outer/2;

elseif dev == 0
    P = .5;

end
end
我得到的具体错误是:   错误==> mpower      输入必须是标量和方阵     
已邀请:
您已正确设置所有内容以进行集成。错误在于函数本身的定义。当将变量用于将要集成的函数时,“。”当它们应用于变量时,(句点)必须在诸如
^
*
之类的运算符之前:
function [y] = NDfx(x)

    y = (1/sqrt(2*pi))*exp(-.5*(x.^2));

end
    
Krono和user57368是正确的。他们已经正确回答了您的实际问题。我的回答只是回答你没有问过的问题。也就是说,为什么你在这里使用四核?关键是许多人想要整合该形式的功能,并且已经完成了!使用现有工具来解决您的问题,因为这些工具通常由知道如何准确有效地解决问题的人编写。 在这种情况下,现有工具由erf和erfc功能组成。它们为您的问题提供准确,高效,矢量化的解决方案。您需要做的唯一事情是弄清楚如何将这些积分转换为您当前的问题,通过简单缩放输入到erf和输出来完成。     

要回复问题请先登录注册