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