OCTAVE:检查单元格数组的元素是否存在
OCTAVE: Checking existence of an element of a cell array
我正在使用 Octave 4.0.0。
我定义了 A{1, 1} = 'qwe'
,但是当我检查是否存在 A{1, 1}
时,如
exist("A{1,1}")
或
exist("A{1,1}", "var")
它 returns 0.
我如何检查它是否存在?
要检查一个数组是否有元素说 3, 5
,你需要验证该数组至少有 3 行和 5 列:
all(size(A) >= [3, 5])
您当然可以检查变量 A
是否存在 before-hand,并且也是元胞数组。完整的解决方案可能类似于
function b = is_element(name, varargin)
b = false;
if ~evalin(['exists("' name '")'], 'caller')
return;
end
if ~strcmp(evalin(['class(' name ')'], 'caller'), 'cell')
return;
end
if evalin(['ndim(' name ')'], 'caller') ~= nargin - 1
return;
end
b = all(evalin(['size(' name ')'], 'caller') >= cell2mat(varargin))
endfunction
此函数接受您感兴趣的变量名称和 multi-dimensional 索引。如果对象作为具有足够维数和大小的元胞数组存在以包含所请求的元素,则它 returns 1。
我正在使用 Octave 4.0.0。
我定义了 A{1, 1} = 'qwe'
,但是当我检查是否存在 A{1, 1}
时,如
exist("A{1,1}")
或
exist("A{1,1}", "var")
它 returns 0.
我如何检查它是否存在?
要检查一个数组是否有元素说 3, 5
,你需要验证该数组至少有 3 行和 5 列:
all(size(A) >= [3, 5])
您当然可以检查变量 A
是否存在 before-hand,并且也是元胞数组。完整的解决方案可能类似于
function b = is_element(name, varargin)
b = false;
if ~evalin(['exists("' name '")'], 'caller')
return;
end
if ~strcmp(evalin(['class(' name ')'], 'caller'), 'cell')
return;
end
if evalin(['ndim(' name ')'], 'caller') ~= nargin - 1
return;
end
b = all(evalin(['size(' name ')'], 'caller') >= cell2mat(varargin))
endfunction
此函数接受您感兴趣的变量名称和 multi-dimensional 索引。如果对象作为具有足够维数和大小的元胞数组存在以包含所请求的元素,则它 returns 1。