bedynamic 发表于 2016-3-28 09:06

积分出问题,求解决



Eq39    -----------------------------------------
alpha=4

L=100;
K=50;
R=1;

r1=R*sqrt(rand(1,L));
seta1=2*pi*rand(1,L);
x1=r1.*cos(seta1);
y1=r1.*sin(seta1);
% plot(x1,y1,'rd')


r2=R*sqrt(rand(1,K));
seta2=2*pi*rand(1,K);
x2=r2.*cos(seta2);
y2=r2.*sin(seta2);
% plot(x2,y2,'b*')


gamma1=zeros(K,L);
d=zeros(1,K);
for u=1:K
    for b=1:L
      gamma1(u,b) = sqrt((x2(u)-x1(b))^2+(y2(u)-y1(b))^2);
%         gamma(u,b) = gamma1(u,b)^(-alpha/2);
    end
    d(u) = min(gamma1(u,:));
end

f=zeros(1,K);
syms Rt;
R=@(t) exp(-t)/t;
for k = 1:K
    f(k)=integral(R,d(k),Inf);
end
plot(d,f,'r*');

出错Output of the function must be the same size as the input. If FUN is an array-valued integrand, set the 'ArrayValued' option to true. 怎么解决??

suffer 发表于 2016-3-28 09:36

integral 这个matlab自带函数中好像没有

从提示语句上来看输入输出变量的问题

bedynamic 发表于 2016-3-28 10:07

suffer 发表于 2016-3-28 09:36
integral 这个matlab自带函数中好像没有

从提示语句上来看输入输出变量的问题

就是积分下限是个数组……怎么解决?

suffer 发表于 2016-3-28 10:22

bedynamic 发表于 2016-3-28 10:07
就是积分下限是个数组……怎么解决?

不明白你的意思

bedynamic 发表于 2016-3-28 10:25

本帖最后由 bedynamic 于 2016-3-28 10:26 编辑

suffer 发表于 2016-3-28 10:22
不明白你的意思
积分下限是代码中求出的d,上限是Inf,我用循环的方式好像有问题,怎么解决啊?

suffer 发表于 2016-3-28 10:28

bedynamic 发表于 2016-3-28 10:25
积分下限是代码中求出的d,上限是Inf,我用循环的方式好像有问题,怎么解决啊?

现在问题是出现在integral这个函数里边,别人不知道这个函数是真么回事,没办法解决

bedynamic 发表于 2016-3-28 10:38

suffer 发表于 2016-3-28 10:28
现在问题是出现在integral这个函数里边,别人不知道这个函数是真么回事,没办法解决

有没有其它什么函数可以求的?或者换个其它方式求?

Frank 发表于 2016-3-28 13:04

suffer 发表于 2016-3-28 09:36
integral 这个matlab自带函数中好像没有

从提示语句上来看输入输出变量的问题

这个是2012a以后版本才增加的函数

happy 发表于 2016-3-28 14:17

后面部分修改为:

f=zeros(1,K);
syms Rt;
R=@(t) exp(-t)/t;
for k = 1:K
    f(k)=integral(R,d(k),Inf);
end
plot(d,f,'r*');

bedynamic 发表于 2016-3-29 08:40

happy 发表于 2016-3-28 14:17
后面部分修改为:

谢谢了。哈哈
页: [1]
查看完整版本: 积分出问题,求解决