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

时间:2015-07-10 10:49:54

标签: 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=((((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

当我调用此函数时,我得到以下错误 -

Integers can only be raised to positive integral powers.

Error in dist1 (line 9)
            d=((((x1-x2).^2)+((y1-y2).^2)).^(0.5));

如果我在0.5的计算中移除d的幂,这样可以正常工作。为什么我得到这个错误,这句话似乎没有错。我也检查了x1的值前面一行中的,x2,y1,y2,它们是

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

1 个答案:

答案 0 :(得分:2)

错误非常明确:

  

整数只能提升为正整数。

您的x1x2y1y2个变量似乎是整数数据类型(例如uint8int32 ,...)。他们需要double(或single)来执行该操作。所以,试试

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

另请注意,由于x1x2y1y2是标量,因此您可以删除这些点:

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