adc.nv is 789 X 2 array
in = ~isnan(adc.nv);
nv = adc.nv(in);
после я делаю это я получаю 1576 X 1 массив вместо 788 X 2 массивалогический массив более чем один размер
adc.nv is 789 X 2 array
in = ~isnan(adc.nv);
nv = adc.nv(in);
после я делаю это я получаю 1576 X 1 массив вместо 788 X 2 массивалогический массив более чем один размер
Возможно, вы имели в виду, чтобы исключить строки, содержащие значения NaN. Пример:
>> x = rand(6,2);
>> x(3,1) = nan; x(5,2) = nan;
>> x
x =
0.81472 0.2785
0.90579 0.54688
NaN 0.95751
0.91338 0.96489
0.63236 NaN
0.09754 0.97059
Сейчас:
>> newX = x(~any(isnan(x),2),:)
newX =
0.81472 0.2785
0.90579 0.54688
0.91338 0.96489
0.09754 0.97059
Такое поведение объясняется здесь: http://www.mathworks.nl/help/techdoc/math/f1-85462.html#bq7egb6-1
Поскольку
in = ~isnan(adc.nv);
in
может иметь различное количество истинного/ложного элемента в каждом строки и/или столбца, возможно, что полученная матрица adc.nv(in)
имеет различное количество элементов в строке/столбце и, следовательно, не может быть сконструировано как матрица Итак, Matlab выбрасывает все это вместе в одном векторе.
альтернативно: 'x (any (isnan (x), 2), :) = [];' – Serg