Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
Arrays 如何将NaN分配给值j<;Matlab中的k_Arrays_Matlab_Nan - Fatal编程技术网

Arrays 如何将NaN分配给值j<;Matlab中的k

Arrays 如何将NaN分配给值j<;Matlab中的k,arrays,matlab,nan,Arrays,Matlab,Nan,我是一名Matlab新手,我想将NaN值分配给一个大小为(j,k,l)的数组,只要维度为j

我是一名Matlab新手,我想将NaN值分配给一个大小为(j,k,l)的数组,只要维度为j使用奇特的矢量化:

% this may be memory expensive for big matrices:
[j,k,l]=meshgrid(1:size(A,1),1:size(A,2),1:size(A,3));

% Tada!
A(j<k | k<l)=NaN;
%对于大型矩阵,这可能会占用大量内存:
[j,k,l]=meshgrid(1:size(A,1),1:size(A,2),1:size(A,3));
%塔达!

A(j您可以使用
bsxfun
高效地执行此操作:

J = (1:size(A,1)).';
K = 1:size(A,2);
L = reshape(1:size(A,3),1,1,[]);
A(bsxfun(@or,bsxfun(@lt,J,K),bsxfun(@lt,J,L))) = NaN;
在MATLAB r2016b或倍频程中,您可以简单地编写:

J = (1:size(A,1)).';
K = 1:size(A,2);
L = reshape(1:size(A,3),1,1,[]);
A(J<K|J<L)=NaN;

太棒了,你会说它是内存昂贵的-你推荐它比其他解决大矩阵的方法好吗?“莱纳更新了!Super。这就是我所拥有的。看看我的内存是否足够快的。”LenaH认为接受这个答案是有效的;“安德鲁比利,谢谢,有时机会是有帮助的。”
J = (1:size(A,1)).';
K = 1:size(A,2);
L = reshape(1:size(A,3),1,1,[]);
A(J<K|J<L)=NaN;
 ________________________________
| METHOD   | MEMORY   | SPEED    |
|==========|==========|==========|
| MESHGRID | 1547 MB  | 1.24 Secs|
|----------|----------|----------|
| BSXFUN   | 57 MB    | 0.18 Secs|
|__________|__________|__________|