MATLAB: Matric “c” and “d” out of for loop and c row matrix corresponding to minimum distance

matric "c" and "d" out of for loop

m=2
T=[1 0 0; 0 (1/sqrt(2)) (1/sqrt(2))];
V1=0.956
V2=2.4
A=[ 1 0 0];
B=[1 1 0];
D=B-A;
d1=m*A;
for X=1:1:m+1
c(x,:)=d1+D*(x-1)
Vndq=T*c(x,:)';
Vnq=Vndq(1,1)
Vnd=Vndq(2,1)
d(x)=abs(V2-Vnq)+abs(V1-Vnd)
end
in the code given minimum distance is
d =[1.3560 0.6489 0.8582]
and
C =
2 0 0
2 1 0
2 2 0
c row matrix 2 1 0 of the minimum distance 0.6489 should be obtained

Best Answer

  • Here is a simpler version of your code:
    m = 2;
    T = [1,0,0;0,(1/sqrt(2)),(1/sqrt(2))];
    V1 = 0.956;
    V2 = 2.4;
    c = zeros(m+1,3);
    c(:,1) = m;
    c(:,2) = 0:m;
    Vndq = T*c.'
    d = sum(abs(bsxfun(@minus,[V2;V1],Vndq)),1)
    Use min to get the closest value:
    >> [val,idx] = min(d)
    val =
    0.64889
    idx =
    2
    >> c(idx,:)
    ans =
    2 1 0