OCTAVE:检查单元格数组的元素是不是存在

Posted

技术标签:

【中文标题】OCTAVE:检查单元格数组的元素是不是存在【英文标题】:OCTAVE: Checking existence of an element of a cell arrayOCTAVE:检查单元格数组的元素是否存在 【发布时间】:2019-07-21 14:56:51 【问题描述】:

我使用的是 Octave 4.0.0。

我定义了A1, 1 = 'qwe',但是当我检查A1, 1 的存在时,如

 exist("A1,1")

exist("A1,1", "var")

它返回 0。

如何检查它的存在?

【问题讨论】:

检查这样的元素的存在是没有意义的。检查数组是否存在,以及它的大小是否足以包含该元素 请注意"A1,1" 不是一个有效的变量名,所以它不能存在。它是一个语句,而不是一个变量名。 @MadPhysicist 好吧,这在我当前的代码中非常有意义;我正在阅读大量文件,然后将它们存储在单元格中并根据它们是否在名称中的某些位置包含某些数字来对它们进行索引。因此,单元格的某些索引有可能保持为空,而单元格本身的存在也无济于事。 您在寻找isempty 函数吗? 取决于他们是否在其名称中的某些位置包含某些数字@HüseyinCanÖnel 在您最后评论“单元格中的文件名...”之后,听起来您正在寻找正则表达式或一些字符串比较/解析函数 【参考方案1】:

要检查数组是否有元素 3, 5,您需要验证该数组是否至少有 3 行和 5 列:

all(size(A) >= [3, 5])

您当然可以预先检查变量A 是否存在,并且也是一个元胞数组。一个完整的解决方案可能类似于

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

此函数接受一个变量名和您感兴趣的多维索引。如果对象作为一个具有足够维度和大小以包含所请求元素的元胞数组存在,则它返回 1。

【讨论】:

鉴于您对问题留下的最后评论,我想说这个答案有点不完整。将单元格值的检查合并到我提供的函数中应该没有问题。 在相关说明中,非常欢迎您。正确的感谢方式是通过单击旁边的复选标记来选择答案。

以上是关于OCTAVE:检查单元格数组的元素是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

如何检查 char 数组是不是有一个空单元格,以便在其中打印 0?

检查字符串是不是仅存在于前一个单元格包含 X 的列中?

如何快速检索不同单元格中的数组元素 ios

Delphi网格面板检查单元格是不是为空

检查合并的单元格是不是为空白

检查表格视图单元格是不是完全可见