Как применить функцию, которая возвращает нескалярный вывод в массивы с использованием arrayfun
? KGПрименение функции в массиве, которая выводит выходные значения с разным размером в векторном виде
0 Например: - как вектовать код?
array = magic(5);
A = cell(size(array));
for i=1:5
for j=1:5
A{i,j} = 1:array(i,j);
end
end
Эта наивная попытка векторизации не работает, потому что выход не является скаляром
array = magic(5);
result = arrayfun(@(x)(1:x),array);
Вы никогда не нужны круглые скобки вокруг этой функции. Но это помогает с видимостью. Кроме того, 'arrayfun' не * действительно * векторизовать код, он просто скрывает цикл (и позволит Matlab многопоточно, если это стоит времени). Обратите внимание, что «трюк» ячейки очень полезен для «аккумулятора», который не имеет опции «uniformOutput». – Jonas
Вот для чего СОСТОЯТСЯ :) – Jonas