在 n 维矩阵上应用 arrayfun
applying arrayfun on n-dimensional matrixes
我需要你的帮助来解决以下问题:
我如何为任何 n 维数组概括以下内容:
reshape(arrayfun(@(x,y)sprintf('%d,%d',x,y),C{:},'un',0),size(M));
M 是我的矩阵,C 是我的 M 索引矩阵。
提前致谢。
问题不在于 arrayfun
的参数中的维数本身,而是参数本身的数量 - 在您的示例中,这与每个参数的维数相对应。因此,您需要向它传递一个接受 varargin
的函数,该函数仍然适用于匿名函数:
reshape(arrayfun(@(varargin)sprintf(strjoin(repmat('%d',size(varargin)),','),varargin{:}),C{:},'un',0),size(M));
这个功能让我很头疼
对于像
这样的函数
f1 = @(x1,x2) x1*x2
你可以做到
output = arrayfun(f1,x1,x2);
其中 x1 和 x2 是输入列。
但是,如果您正在执行广义程序,其中 f1
可以有任意数量的输入并且您需要像 X 这样的广义输入矩阵,例如
f1 = @(x1,x2,x3,x4,x5) 2*x1+4*x2+10*x3+0.2*x4+x5;
output = arrayfun(f1,num2cell(X,1){:});
其中 X
表示具有 5 列的矩阵,表示 x1
到 x5
例如:
X = [1, 2, 3, 4, 5;
6, 7, 8, 9, 0;];
我需要你的帮助来解决以下问题:
我如何为任何 n 维数组概括以下内容:
reshape(arrayfun(@(x,y)sprintf('%d,%d',x,y),C{:},'un',0),size(M));
M 是我的矩阵,C 是我的 M 索引矩阵。
提前致谢。
问题不在于 arrayfun
的参数中的维数本身,而是参数本身的数量 - 在您的示例中,这与每个参数的维数相对应。因此,您需要向它传递一个接受 varargin
的函数,该函数仍然适用于匿名函数:
reshape(arrayfun(@(varargin)sprintf(strjoin(repmat('%d',size(varargin)),','),varargin{:}),C{:},'un',0),size(M));
这个功能让我很头疼
对于像
这样的函数f1 = @(x1,x2) x1*x2
你可以做到
output = arrayfun(f1,x1,x2);
其中 x1 和 x2 是输入列。
但是,如果您正在执行广义程序,其中 f1
可以有任意数量的输入并且您需要像 X 这样的广义输入矩阵,例如
f1 = @(x1,x2,x3,x4,x5) 2*x1+4*x2+10*x3+0.2*x4+x5;
output = arrayfun(f1,num2cell(X,1){:});
其中 X
表示具有 5 列的矩阵,表示 x1
到 x5
例如:
X = [1, 2, 3, 4, 5;
6, 7, 8, 9, 0;];