After thinking about this issue, another couple of question came to mind.
When I create a row vector, say xc = randn(1,5), the results indicate that
the vector is e.g.
xc = rand(1,5)
1x5 Array{Float64,2}:
0.989421 0.718148 0.499914 0.13024 0.939856
The type is {Float64,2}.
Questions:
1) What does the "2" mean in {Float64,2}? If I create xc = rand(5) the type is
{Float64,1}.
2) The sortperm function only seems to accept {Float64,1} types. The Euclidean
distance code create types of {Float64,2} but I need {Float64,1} for the
sortperm function. Do I need to convert these before using this command?
I'm probably missing something really basic so apologies for the query.
Thanks,
Don
On Wednesday, July 2, 2014 4:20:55 PM UTC-4, Donald Lacombe wrote:
>
> Greetings, part 2...
>
> After doing some tests, I found that this code works just fine:
>
> julia> using Distance
>
> Warning: could not import Base.foldl into NumericExtensions
>
> Warning: could not import Base.foldr into NumericExtensions
>
> Warning: could not import Base.sum! into NumericExtensions
>
> Warning: could not import Base.maximum! into NumericExtensions
>
> Warning: could not import Base.minimum! into NumericExtensions
>
>
>
> julia> xc = rand(8)'
>
> 1x8 Array{Float64,2}:
>
> 0.30107 0.479169 0.230607 0.65126 0.386921 0.455316 0.921496 0.244873
>
>
> julia> yc = rand(8)'
>
> 1x8 Array{Float64,2}:
>
> 0.866199 0.767794 0.76163 0.262925 … 0.742765 0.980952 0.424966
>
>
> julia> temp = [xc ; yc]
>
> 2x8 Array{Float64,2}:
>
> 0.30107 0.479169 0.230607 0.65126 … 0.455316 0.921496 0.244873
>
> 0.866199 0.767794 0.76163 0.262925 0.742765 0.980952 0.424966
>
>
> julia> R = pairwise(Euclidean(),temp)
>
> 8x8 Array{Float64,2}:
>
> 0.0 0.203477 0.126094 0.697548 … 0.197554 0.630949 0.444797
>
> 0.203477 0.0 0.248638 0.533393 0.0345751 0.491009 0.415241
>
> 0.126094 0.248638 0.0 0.652423 0.225499 0.724865 0.336966
>
> 0.697548 0.533393 0.652423 0.0 0.518306 0.767196 0.437502
>
> 0.376201 0.283308 0.304834 0.355027 0.252287 0.719136 0.160613
>
> 0.197554 0.0345751 0.225499 0.518306 … 0.0 0.523505 0.381159
>
> 0.630949 0.491009 0.724865 0.767196 0.523505 0.0 0.87575
>
> 0.444797 0.415241 0.336966 0.437502 0.381159 0.87575 0.0
>
>
> As expected, the diagonal elements are 0 and everything seems to work fine
> although I did not test other distance formulas.
>
> I'm posing this so others can see the results and possibly make use of
> this themselves.
>
> Is there a central repository for user submitted solutions or examples? If
> so I'd like to post this so others can see or alternatively someone else is
> free to use this (and the original code I posted) for future reference.
>
> Thank you all again for your help! I'm going to be coding some models this
> summer and will probably be back to bug everyone again.
>
> Thanks,
> Don
>
> On Wednesday, July 2, 2014 10:22:58 AM UTC-4, Donald Lacombe wrote:
>>
>> Greetings!
>>
>> I am a new Julia user and have the following issue. I am writing code to
>> calculate a knn spatial weight matrix to estimate a spatial econometric
>> model. Using the MATLAB code from Jim LeSage's Econometrics Toolbox, I
>> converted that code into Julia as follows:
>>
>> xc = rand(8);
>>
>> yc = rand(8);
>>
>> n = length(xc);
>>
>> k = 2;
>>
>> distance = zeros(n);
>>
>> nnlist = zeros(n,k);
>>
>> tempw = zeros(n,n);
>>
>>
>> for i=1:n;
>>
>> xi = xc[i,1];
>>
>> yi = yc[i,1];
>>
>> distance = (xc - xi*ones(n)).^2 + (yc - yi*ones(n)).^2
>>
>> temp = sortperm(distance)
>>
>> nnlist[i,1:k] = temp[2:k+1,1]';
>>
>> end
>>
>>
>> for i=1:n
>>
>> tempw[i,nnlist[i,:]] = 1;
>>
>> end
>>
>>
>> W = tempw/k;
>>
>>
>> This is a "toy" example and I was wondering if I can use the Distance
>> package to simplify the distance = (xc - xi*ones(n)).^2 + (yc -
>> yi*ones(n)).^2 formula. I tried using the pairwise option like so:
>>
>>
>> R = pairwise(Euclidean(),xc,yc) but received the following message:
>>
>>
>> R = pairwise(Euclidean(),xc,yc)
>>
>> MethodError(pairwise,(Euclidean(),[0.05961066617957589,0.018538084399339905,0.39282193332224646,0.7006919213133509,0.5099836895629475,0.8448415935222402,0.2985674570217043,0.8022287058003177],[0.5808687231553928,0.9655167324458858,0.026306556019434435,0.6565373244339141,0.11927452074471412,0.11873635450496622,0.6271632933770979,0.7081439899673692]))
>>
>> I'd like to be able to utilize the Distance package but am a bit stumped.
>> The code as written works but it's bugging me that I cannot seem to get the
>> above command to work. I also get the following error when loading Distance:
>>
>>
>> using Distance
>>
>> Warning: could not import Base.foldl into NumericExtensions
>>
>> Warning: could not import Base.foldr into NumericExtensions
>>
>> Warning: could not import Base.sum! into NumericExtensions
>>
>> Warning: could not import Base.maximum! into NumericExtensions
>>
>> Warning: could not import Base.minimum! into NumericExtensions
>>
>>
>> If there is anyone who can address this I'd greatly appreciate it.
>> Incidentally, the help on this group is one reason I am making the change.
>>
>>
>> Don
>>
>>
>>
>>
>>