2017-10-11 133 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循环分配的,这对我来说非常具有挑战性,因为我打算缩短代码 –