jonathf/matlab2cpp

Vectorize vs. indexing

jonathf opened this issue · 0 comments

Case:

>> A = rand(4,4)
A =
0.8147    0.6324    0.9575    0.9572
0.9058    0.0975    0.9649    0.4854
0.1270    0.2785    0.1576    0.8003
0.9134    0.5469    0.9706    0.1419
>> b = [1,2;2,3;3,5] ;
>> A(b)
ans =
0.8147    0.9058
0.9058    0.1270
0.1270    0.6324

Med andre ord, Matlab vectoriserer A, henter ut ved hjelp av singel index, og fyller verdiene etter shape definert av argumentet. Mao:

A([1;2]) == [A(1); A(2)]

Tilsvarende for alle andre shapes.

@aronandersson, forslaget vi dikuterte brukte jeg forslaget:

arma::vectorise(A)(arma::vectorise(b))

Du foreslo:

A(b(0), b(1))

Men hverken løser problemet korrekt.

I min verden burde vi lagen en inline function, eller er det en annen måte å gjøre dette på?