function sys = tunableZPK(prefix, nx, nu, ny)
    arguments
        prefix (1,1) string
        nx (1,1) double {mustBeInteger,mustBePositive} = 1
        nu (1,1) double {mustBeInteger,mustBePositive} = 1
        ny (1,1) double {mustBeInteger,mustBePositive} = 1
    end
    
    sys = 0;
    for i = 1:nx
        a = realp(prefix + "a" + i, 0);
        b = realp(prefix + "b" + i, 0);
        X = realp(prefix + "X" + i, zeros(ny, nu));
        Y = realp(prefix + "Y" + i, zeros(ny, nu));
    
        A = [-a, b;
             -b, -a];
        A = fKron(eye(nu), A);
        B = [0; 1];
        B = fKron(eye(nu), B);
        C = [Y, X];
        C = C(:, reshape([1:nu; nu+1:2*nu], [], 1)'); % interlace.
    
        sys = sys + ss(A, B, C, zeros(ny, nu));
    end
end