Matlab 索引(查询)ndgrid输出,而不实际构建它
由于内存问题,是否可以在不实际构建输出的情况下索引ndgrid输出?假设我们需要构造输出并请求第i个元素Matlab 索引(查询)ndgrid输出,而不实际构建它,matlab,memory,multidimensional-array,Matlab,Memory,Multidimensional Array,由于内存问题,是否可以在不实际构建输出的情况下索引ndgrid输出?假设我们需要构造输出并请求第i个元素 [output{1:n}] = ndgrid(1:k) [output{1}(i) ... output{n}(i)] 有可能避免这种构造吗?我相信您正在寻找以下功能: ndgrid的大小为[k,k,…k](n次),您正试图将线性索引ii访问到此k^n维度超卷 PS, 这是最好的。我已经解决了这个问题,所以我发布了一个完整的答案。在m文件中写入以下函数: function outpu
[output{1:n}] = ndgrid(1:k)
[output{1}(i) ... output{n}(i)]
有可能避免这种构造吗?我相信您正在寻找以下功能: ndgrid的大小为
[k,k,…k]
(n
次),您正试图将线性索引ii
访问到此k^n
维度超卷
PS,
这是最好的。我已经解决了这个问题,所以我发布了一个完整的答案。在m文件中写入以下函数:
function output=my_ndgrid(varargin)
in=nargin;
sz=zeros(1,in-1);
for i=1:in-1
sz(i)=length(varargin{i});
end
ind=varargin{in};
[ndgrid_ind{1:length(sz)}] = ind2sub(sz,ind);
for i=1:length(sz)
output{i}(ind)=varargin{i}(ndgrid_ind{i});
end
end
以下命令取自应答
[ndgrid_ind{1:length(sz)}]=ind2sub(sz,ind)代码>
在上面的函数中,可以传递任意多个参数,就像传递给ndgrid
一样。最后一个参数必须是索引(在您的例子中是i^th
元素,因此索引将是i
)
比如说,
a=my_ndgrid(1:3:10,2:2:6,5:1:8,10); %asking for 10th element
它将根据您的需要存储为a{1}(10),…,a{3}(10)
通过手动创建ndgrid
,您可以得到匹配的答案[4 6 5]
。示例输入和预期输出进一步解释它?当您说i^th
元素时,您指的是线性指数i
,对吗?因为,从output{1}
到output{n}
的每个矩阵都将是多维的。@ParagS.Chandakkar对,具有线性索引。一件有趣的事情是,可以使用。
a=my_ndgrid(1:3:10,2:2:6,5:1:8,10); %asking for 10th element