MATLAB: Différentes fonctions avec différentes variables en entrée

Bonjour la communauté Matlab,
J’ai un problème lorsque différentes fonctions ont des variables d’entrée différentes. Alors les fonctions que j’appelle veulent bien sûr toutes les variables d’entrée. Mais je ne veux pas coder pour chaque fonction un seul code. Avez-vous une idée, comment je peux « regrouper » ou quelque chose de similaire les variables d’entrée pour les boucler à travers le code entier avec toutes les fonctions appelées?
 
function [R, H, J] = RS(@func,@func2,x,y,eta, S)
[H] = F1(func, x ,y, eta, S); % called function 1

[J] = F2(func2,x,y,eta, S); % called function 2

H_inv = inv(H);
R = (H_inv*J*H_inv);
R = sqrt(diag(R));
end
 
dans l’exemple, les variables d’entrée « x, y, eta, S » sont uniquement pour la fonction RS nécessaire, mais chaque func et func2 que je veux exécuter, ont un nombre différent de variables d’entrée et différentes variables d’entrée. J’ai essayé
 
f = @(theta,eps,L,K,B,LK,FK,D)func(theta,eps,L,K,B,LK,FK,D);
f2 = @(theta,eps,L,K,B,LK,FK,D,ti,gi)func2(theta,eps,L,K,B,LK,FK,D,ti,gi);
function [R, H, J] = RS(f,f2,x,y,eta, S)
[H] = F1(f, x ,y, eta, S); % called function 1
[J] = F2(f2,x,y,eta, S); % called function 2
H_inv = inv(H);
R = (H_inv*J*H_inv);
R = sqrt(diag(R));
end
 
mais cela ne fonctionne pas. Merci d’avance.

Meilleure réponse

  • Je pense que vous pouvez le faire en regroupant les arguments de chaque fonction dans un tableau de cellules. Cela ressemblerait à quelque chose comme ceci (non testé):
     
    function [R, H, J] = RS(@func,@func2,args,arg2)
    [H] = F1(func, args{:}); % called function 1
    [J] = F2(func2, args2{:}); % called function 2
    H_inv = inv(H);
    R = (H_inv*J*H_inv);
    R = sqrt(diag(R));
    end
     
    L’appel à cette fonction ressemblerait à quelque chose comme:
     

    [R, H, J] = RS(@func,@func2,{theta,eps,L,K,B,LK,FK,D},{theta,eps,L,K,B,LK,FK,D,ti,gi})