在matlab中尝试计算功率时出错

在matlab中尝试计算功率时出错,matlab,Matlab,我在matlab中有这个函数- function [c,arr2]=dist1(i,c,arr1,arr2,A,mx,point) for j=i+1:mx if arr1(i,j)==1 & A(j)~=0 x1=point(i,1); y1=point(i,2); x2=point(j,1); y2=point(j,2); d=(

我在matlab中有这个函数-

function [c,arr2]=dist1(i,c,arr1,arr2,A,mx,point)      
    for j=i+1:mx
        if arr1(i,j)==1 & A(j)~=0
            x1=point(i,1);
            y1=point(i,2);
            x2=point(j,1);
            y2=point(j,2);
            d=((((x1-x2).^2)+((y1-y2).^2)).^(0.5));
            if d< 0.5
                arr2(c)=i;
                c=c+1;
                [c,arr2]=dist1(j,c,arr1,arr2,A,mx,point);
            end
        end
    end
end
如果我在计算
d
时去掉
0.5
的幂,这就可以了。为什么我会得到这个错误,这个语句中似乎没有什么错误。我还检查了前面几行中的x1、x2、y1、y2的值,它们是

x1=208 y1=171 x2=207 y2=162

错误非常明显:

整数只能提升为正整数幂

您的
x1
x2
y1
y2
变量似乎是整数数据类型(例如
uint8
int32
,…)。要执行该操作,它们需要是
double
(或
single
)。所以,试试看

d = double((((x1-x2).^2)+((y1-y2).^2)).^(0.5))^0.5;
还请注意,由于
x1
x2
y1
y2
是标量,因此可以删除点:

d = double((((x1-x2)^2)+((y1-y2)^2))^0.5)^0.5;
d = double((((x1-x2)^2)+((y1-y2)^2))^0.5)^0.5;