2017-10-11 3 views
1

Das Problem, das ich hier zu lösen versuche ist, wie extrahiere ich die Daten von x1, y1, x2, y2, wie ich 5 Sätze dieser Daten aufgrund von 5 Ebenen habe? die Daten im im Arbeitsbereich immer nur die letzten Daten, die Herausforderung für mich, die DatenExtrahieren von Daten aus For-Schleife Matlab

j = 2; 

for i = 1 : 5 % number of planes(3D matrix) 
    x1 = P(:,1,i); % x value 
    y1 = P(:,2,i); % y value 

    valid1 = y1 > 0; 
    valid_fzn1 = y1(valid1); 
    valid_time1 = x1(valid1); 

    x2 = P(:,3,i); 
    y2 = P(:,4,i); 

    valid2 = y2 > 0; 
    valid_fzn2 = y2(valid2); % getting data more than zero 
    valid_time2 = x2(valid2); % getting data more than zero 

    figure(j) 
    subplot(2,1,1) 
    plot(valid_time1,valid_fzn1,'b.') 
    title('Fzn vs time(Left Leg)') 
    xlabel('time(s)') 
    ylabel('Fzn(N)') 
    hold on 

    subplot(2,1,2) 
    plot(valid_time2,valid_fzn2,'b.') 
    title('Fzn vs time(Left Leg)') 
    xlabel('time(s)') 
    ylabel('Fzn(N)') 
    hold on 


    j = j + 1; 
    i = i + 1; 
end 

Antwort

0

Sie benötigt abzurufen ist, kann die Variablen drehen, in dem Sie interessiert in die Zellen zu sein, um der Lage sind, eine andere zu speichern "Schicht" von Informationen. In Ihrer Situation, glaube ich, so etwas wie die folgenden funktionieren (bitte beachten Sie, ich war ein Arbeitsergebnis zu sehen, ohne zu wissen, P nicht in der Lage):

j = 2; 

for i = 1 : 5 % number of planes(3D matrix) 
    x1{i} = P(:,1,i); % x value 
    y1{i} = P(:,2,i); % y value 

    valid1 = y1{i} > 0; 
    valid_fzn1 = y1{i}(valid1); 
    valid_time1 = x1{i}(valid1); 

    x2{i} = P(:,3,i); 
    y2{i} = P(:,4,i); 

    valid2 = y2{i} > 0; 
    valid_fzn2 = y2{i}(valid2); % getting data more than zero 
    valid_time2 = x2{i}(valid2); % getting data more than zero 

    figure(j) 
    subplot(2,1,1) 
    plot(valid_time1,valid_fzn1,'b.') 
    title('Fzn vs time(Left Leg)') 
    xlabel('time(s)') 
    ylabel('Fzn(N)') 
    hold on 

    subplot(2,1,2) 
    plot(valid_time2,valid_fzn2,'b.') 
    title('Fzn vs time(Left Leg)') 
    xlabel('time(s)') 
    ylabel('Fzn(N)') 
    hold on 


    j = j + 1; 
    i = i + 1; 
end 
+0

Hey, i lockig und runde Klammern gerade versucht, die es funktionieren nicht . Für die geschweifte Klammer {i} heißt es, dass "Zuordnung des Zelleninhalts zu einem Arrayobjekt ohne Zelle" lautet. Während die runde Klammer (i), besagt, dass "() -Indexierung muss zuletzt in einem Indexausdruck erscheinen." Ich habe andere Beispiele durchgesehen, aber meine Daten unterscheiden sich von den anderen, so dass ich nicht wissen würde, wie man es zum Laufen bringt. –

+0

Was hier passieren könnte, ist, dass Sie einen Teil des Codes haben, der nicht gezeigt wird, der x1, x2 ... einen Wert zuweist. Wenn sie vorher benutzt wurden, müssen Sie wahrscheinlich die Variable umbenennen, um erlauben Sie die Zellzuweisung zu arbeiten. – acampb311

+0

Ich sehe, das Problem ist, dass für den vorherigen Wert zu x1 ... auch mit FOR-Schleife zugewiesen wurde, was ziemlich schwierig für mich war, da ich die Codes verkürzen möchte –