Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 索引(查询)ndgrid输出,而不实际构建它_Matlab_Memory_Multidimensional Array - Fatal编程技术网

Matlab 索引(查询)ndgrid输出,而不实际构建它

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

由于内存问题,是否可以在不实际构建输出的情况下索引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 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