2012-07-09 2 views
2

Lors de l'exécution de l'un de mes programmes, je dois parcourir une matrice assez grande (100 * 700) pour identifier les irrégularités.Parcourir une variable pendant un appel de fonction

Mon idée initiale était d'avoir un point d'arrêt en place quand j'ai besoin de faire un scan de données, mais je ne suis pas fan de cette solution. Ce que je cherche équivaudrait à appeler openvar('A') pendant un appel de fonction (sauf que je ne peux pas le faire actuellement). L'alternative, disp rend la matrice mal.

Des indices?

Edit:
Un exemple échantillon de ce que je suis en train de faire:

function main 

time = 0:pi/100:4*pi; 
inV = (1:100)'; 

data = 10*diag(rand(100,1))*sin((inV)*time); 

error = ceil(350*rand); % find the anolmaly 
data(ceil(100*rand),error:(error+20))= -13; 
test = true; 

openvar('data') 

while test 

    close all; 
    figure(1) 
    hold on; 
    plot(data') 

    test= (input(strcat('Further review? '))); 
    if (test) 
     data(test,:) = []; 
    end 
end 

Si je un point d'arrêt, je pouvais parcourir les données sachant que -13 fait des ravages sur elle (-13 est un nombre aléatoire que j'ai utilisé, en réalité, c'est beaucoup plus compliqué). Cependant, les points d'arrêt n'existent que pendant la session Matlab en cours.

J'utilise Matlab 2012a

+0

Je ne sais pas si cela aide, mais vous pouvez mettre en pause l'exécution en utilisant 'une pause sur; pause »après avoir tracé votre matrice avec' image() '. Tracer votre matrice avec l'image est la façon la plus simple de l'analyser. Je pense ... –

+0

Pourquoi n'êtes-vous pas fan de la solution breakpoint? –

+0

@ user1241315 Je trace la matrice lorsque j'ai besoin de balayer ma matrice. La solution de pause n'est pas beaucoup mieux que mon autre solution, qui est d'utiliser 'input': au plus je verrai 64 * 64 – Rasman

Répondre

1

Ok, donc ce que je cherche est

t = uitable; 
set(t,'Data',data) 

agréable et simple

0

(1) vous pouvez utiliser DISP (NUM2STR (DATA, FORMAT)) ou fprintf pour rendre la matrice plus correctement, mais l'affichage d'une matrice 100x700 est vraiment pas une bonne idée. (2) Vous utilisez Matlab, donc je pense que Matlab devrait trouver des irrégularités dans une matrice pour vous. Quel est le point d'utiliser Matlab si vous faites un tel travail à la main. Je suggère de trouver les irrégularités dans votre matrice avec un algorithme (vous pourriez fournir quelques détails sur les irrégularités, peut-être quelqu'un va venir avec une idée sur la façon de le faire).

Questions connexes