如何将NaN分配给值j< k在Matlab中

时间:2017-03-28 08:15:01

标签: arrays matlab nan

我是一个Matlab新手,我希望将NaN值分配给大小为(j,k,l)的数组,只要维度为j< k或j<湖我如何最有效地完成这项工作?

2 个答案:

答案 0 :(得分:4)

您可以使用do { let data = try JSONSerialization.data(withJSONObject:testdict, options: JSONSerialization.WritingOptions.prettyPrinted) let str = String(data:data, encoding: String.Encoding.utf8) print(str) } catch { print("JSON error") } 有效地执行此操作:

bsxfun

在MATLAB r2016b或Octave中,您只需编写:

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;

对矩阵J = (1:size(A,1)).'; K = 1:size(A,2); L = reshape(1:size(A,3),1,1,[]); A(J<K|J<L)=NaN; 进行测试的结果:

A = rand(500,400,300)

答案 1 :(得分:3)

使用花哨的vecotization:

info.php

如果你没有足够的RAM(或者不想使用它),那么最好的选择就是循环:

% 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;

这可能会慢一些,但不需要任何额外的内存。