Какой самый эффективный способ применить двоичную функцию к некоторым столбцам двух таблиц?
Например, пусть
var1=[1;2;3;4];
var2=[1;1;1;3];
A=table(var1,var2);
var1=[2;3;4;5];
var2=[1;1;1;3];
B=table(var1,var2);
Если я хочу новую таблицу C, где
C=table(func(A.var1,B.var1),var2);
с, например, func=@mean
,
Какой самый эффективный способ достижения результата? [bsxfun(@func,A(:,1),B(:,1),var2)]
эффективен?
В моем приложении мне нужно сначала удалить строки, где var2
равно 0, а A.var2
и B.var2
не идентичны. Я использую синтаксис как A=A(A.var2~=0,:)
и [~,ia,ic]=intersect(A.var2,B.var2); A=A(ia,:)
. И func
будет комбинацией двух вышеупомянутых шагов и [mean(A(:,1),B(:,1)),var2)]
перед использованием bsxfun
. Тем не менее, в этот момент я эффективно зацикливался на столбцах каждой таблицы 3 раза. Есть ли более эффективный способ с помощью встроенных функций применять двоичную функцию для выбора столбцов из 2 таблиц на основе некоторых условий?