MATLAB - МАТЕМАТИЧЕСКАЯ ЛАБОРАТОРИЯ:векторизованное присвоение из двойного массива массиву ячеек

StackOverflow https://stackoverflow.com/questions/1669838

  •  13-09-2019
  •  | 
  •  

Вопрос

У меня есть три массива, все одинакового размера:

xout        % cell array
xin         % numeric array of doubles
b           % logical array

Как я могу взять элементы xin, которые соответствуют индексам, где b равно true, и назначить их соответствующим местам в xout?

>> xout = {'foo', 'bar', 'baz', 'quux'};
>> xin = [1, 2, 3, 4];
>> b = (xin ~= 2);       % yields [1 0 1 1] in this case
>> xout{b}=xin(b);
??? The right hand side of this assignment has too few values 
to satisfy the left hand side.

>> xout(b)=xin(b);
??? Conversion to cell from double is not possible.
Это было полезно?

Решение

Вы должны использовать функцию num2cell чтобы преобразовать правую часть в массив ячеек перед назначением его xout:

xout(b) = num2cell(xin(b));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top