2017-10-11 119 views
1

我想在這裏解決的問題是我如何提取x1,y1,x2,y2的數據,因爲我有5套這些數據由於5架飛機?數據即時得到的工作區是唯一的最後的數據,這是挑戰,對我來說,檢索所需從循環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 

回答

0

您可以打開在你有興趣進入細胞,以便能夠存儲其他變量的數據'層'的信息。在你的情況,我相信像下面這樣就可以了(請注意我沒能看到工作的結果,不知道P):

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

嘿,我只是想花和圓括弧它沒有工作。 對於大括號{i},它表示「單元格內容分配給非單元格數組對象」。 雖然圓括號(i)表示「()-indexing必須最後出現在索引表達式中。」 我查看了其他例子,但我的數據與其他例子不同,所以我不知道如何使它工作。 –

+0

這裏可能發生的情況是,你有一部分代碼沒有顯示給x1,x2賦值。如果它們以前已經被使用過了,那麼你可能需要重命名該變量以便允許單元分配工作。 – acampb311

+0

我看到了,問題是,以前的值x1 ...也是使用FOR循環分配的,這對我來說非常具有挑戰性,因爲我打算縮短代碼 –