在matlab中尝试计算功率时出错
我在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=(
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;