Filter löschen
Filter löschen

normpdf and integral: non-scalalr arguments must match in size

13 Ansichten (letzte 30 Tage)
Abhinav
Abhinav am 10 Okt. 2018
Kommentiert: Torsten am 12 Okt. 2018
I want to compute a numerical integration problem, the code for which is as follows
mu=0;
sig2_tmp=1;
k=100;
samps=normrnd(mu,sig2_tmp,[k,1]);
func=@(x)prod(normpdf(samps,mu,x));
c(j)=integral(func,0,inf);
It gives the following error message:
Error using normpdf (line 36)
Non-scalar arguments must match in size.
Error in @(x)prod(normpdf(samps,mu,x))
But when I evaluate func at x=1, it works fine. So, I don't know how to fix this error.
Please help.

Antworten (1)

Torsten
Torsten am 11 Okt. 2018
Does it make sense to integrate the pdf's over the standard deviation ?
In any case:
Try
func=@(x)prod(normpdf(samps,ones(size(x))*mu,x));
Best wishes
Torsten.
  2 Kommentare
Abhinav
Abhinav am 11 Okt. 2018
I get the same error, when I use this code.
Torsten
Torsten am 12 Okt. 2018
This code works for me:
function main
mu=0;
sig2_tmp=1;
k=100;
samps=randn(k,1);
samps=mu+sig2_tmp*samps;
func=@(x)prod(normpdf_gnu(samps,mu,x));
c=integral(func,0,inf)
end
function p = normpdf_gnu(x,m,s);
% NORMPDF returns normal probability density
%
% pdf = normpdf(x,m,s);
%
% Computes the PDF of a the normal distribution
% with mean m and standard deviation s
% default: m=0; s=1;
% x,m,s must be matrices of same size, or any one can be a scalar.
%
% see also: NORMCDF, NORMINV
% Reference(s):
% $Revision: 1.6 $
% $Id: normpdf.m,v 1.6 2003/03/13 16:00:33 schloegl Exp $
% Version 1.28 Date: 13 Mar 2003
% Copyright (c) 2000-2003 by Alois Schloegl <a.schloegl@ieee.org>
% This program is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 2 of the License, or
% (at your option) any later version.
%
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this program; if not, write to the Free Software
% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
if nargin==1,
m=0;s=1;
elseif nargin==2,
s=1;
end;
% allocate output memory and check size of argument
z = (x-m)./s; % if this line causes an error, input arguments do not fit.
%p = ((2*pi)^(-1/2))*exp(-z.^2/2)./s;
SQ2PI = 2.5066282746310005024157652848110;
p = exp(-z.^2/2)./(s*SQ2PI);
p((x==m) & (s==0)) = inf;
p(isinf(z)~=0) = 0;
p(isnan(x) | isnan(m) | isnan(s) | (s<0)) = nan;
end

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Graphics Object Programming finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by