function Vo = doDAC(Vi)
R1 = 20e3;
R2 = 10e3;

% make A
G = R2*eye(17);
G(17+2:2*(17+1):end) =R1;

K=zeros(9,17);
K(1:9*2+1:end) = -1;
K(9+1:9*2+1:end) = 1;
K(9*2+1:9*2+1:end) = 1;

A = [G K';K zeros(9)];

vi = uint8(Vi);
AI = inv(A);
for i=1:size(vi,1)
    for j=1:size(vi,2)
        b = zeros(17+9,1);
        b(2:2:17) = mod(bitshift(vi(i,j),-[0:7]),2);
        x = AI*b;
        Vo(i,j) = x(end);
    end
end

