Per quanto riguarda il debug, è impossibile pensare di poter scrivere un programma (in qualunque linguaggio) senza sapere come usarlo.
https://it.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html
Per quanto riguarda il resto, purtroppo non ho accesso ad una versione di MatLab che abbia la funzione "jsondecode" (introdotta nella R2016b).
Stando al codice che hai pubblicato, non capisco a cosa serva l'istruzione "eval(['importdata ' files(i).name]);", mi sembra del tutto inutile.
Ad ogni modo, se riesci a leggere correttamente il file json con la funzione "jsondecode", ad ogni iterazione del ciclo interno dovresti ottenere nella variabile "val" tutti i dati.
Dovresti provare ad "esplorare" il contenuto della struttura "val" per verificare che contenga effettivamente tutti i dati.
il fatto che, ad ogni iterazione venga sovrascritta, non è un problema.
Se i dati che ti interessano sono solo quelli contenuti nel campo "people.pose_keypoints_2d" e se vuoi convertirli nella matrice "a", puoi salvarla, ad ogni iterazione, in una matrice a tre dimensioni: "b(:,:,n)=a"
Nel caso le dimensioni della matrice "a" non siano sempre le stesse, puoi salvare la matrice "a" in un cellarray: "b{n}=a"
A questo punto, nel Workspace avrai una matrice a tre dimensioni od un cellarray che potrai usare nel prosieguo del codice.
Nel caso tu debba accedere anche ad altri campi della struttura "val" pupi automatizzare il processo usando la funzione "fieldnames" (
https://www.mathworks.com/help/matlab/ref/fieldnames.html) per estrarre i nomi dei campi della struttura in un cellarray ed accedervi tramite un loop, specificando il nome del campo - memorizzato nel cellarray - tra parentesi:
a.b=1
a.c=2
a.d=3
f=fieldnames(a)
for i=1:length(f)
a.(f{i})
end