2014-09-30 1 views
1

У меня есть несколько больших массивов данных, содержащих около 0 строк Я хочу распечатать свой сюжет без них, как? Массивы выглядят как (или его части (100000: 2: 2: N), массив так косяк только те строки дель) A (:,:, 1,5):Как построить мои данные без нулей во входных данных

12 60 
    12.1 80 
    12.2 75 
    0 0 
    0 0 
    0 0 

Thx

ps прямо сейчас я участок с участком (A (:, 1,1,5), A (:, 2,1,5)); как я могу участки их разброс (точки) с различной длиной пара

THx много

+0

ли вы только хотите, чтобы игнорировать двойные пары нулей в конце? Как связать его с другой промежуточной переменной, а затем удалить ненужные строки? –

ответ

1

Как насчет:

zero_ind = any(A(:,:,1,5), 2); %// You might need to call squeeze here depending on the dimensions 
plot(A(zero_ind,1,1,5),A(zero_ind,2,1,5)); 
1

plot() будет игнорировать любой вход, который NaN, поэтому при условии, «0» не является допустимым значением в ваших данных, замените все нули NaN.

Например, следующий код будет отображаться только 7 из 10 пунктов:

>> x = 10*rand(1,10); 
>> y = 10*rand(1,10); 
>> x([1,5,6])= 0; 
>> x(x == 0) = NaN; 
>> y(y == 0) = NaN; 
>> plot(x,y,'.'); 
+3

мелкий опечатка. вы должны использовать 'y (x == 0) = NaN', иначе вы могли бы/получат проблемы, если не те 3 элемента в x также равны 0 в y. –

+0

@ The Minion - почему? Я пробовал это с помощью x, y или обоих «NaN», и график был правильным. У вас есть пример? – bavaza

+0

Когда вы делаете это, вы устанавливаете все значения y, которые равны нулю для NaN, то же самое относится ко всем значениям x. Теперь возьмите такие данные, как: 'x = [0 1 2 3 0 0 0]' и 'y = [9 0 15 0 9 1 8]' Только одна точка, построенная после замены этих нулей на NaN, равна [2,15]. Однако вы хотели бы построить график [1,0] [2,15] [3,0]. Если вы выполняете 'y (x == 0) = NaN; x (x == 0) = NaN;' у вас не будет такой потери данных. Также позаботься о заказе (если вы меняете x сначала, вы не будете изменять anyhting по y) –

0

Я предполагаю, что вы хотите удалить только строки, в которых обе колонны равны 0. Что вы можете сделать, это следующее:

A(sum(A==0,2)==2,:)=NaN; 

Разъяснение: она создает логический массив с тех, где любой элемент A равно 0. Затем он суммируется вдоль столбцов. Если оба столбца равны 0, сумма будет равна 2. Затем она заменяет все на NaN, которое будет игнорироваться функцией plot.

Затем участок:

plot(A(:,1), A(:,2)) 
Смежные вопросы