Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.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 如何检查单元格';s元素包含矩阵_Matlab - Fatal编程技术网

Matlab 如何检查单元格';s元素包含矩阵

Matlab 如何检查单元格';s元素包含矩阵,matlab,Matlab,我有一个单元格,描述如下: mixed_values = {'jim', 89, [5 2 1; 1 2 3]}; mixed_values{1} mixed_values{2} mixed_values{3} 我循环它: for k=1:length(mixed_values) curstate=mixed_values{k}; % Check for the [5 2 1; 1 2 3] if ismatrix(curstate) disp('yes

我有一个单元格,描述如下:

  mixed_values = {'jim', 89, [5 2 1; 1 2 3]};
  mixed_values{1}    
  mixed_values{2}
  mixed_values{3} 
我循环它:

for k=1:length(mixed_values)
  curstate=mixed_values{k};

% Check for the [5 2 1; 1 2 3]
if ismatrix(curstate)
    disp('yes');

else
   disp('no') 
end  
end
但它多次找到矩阵

yes
yes
yes
如何顺便检查它?

来自Matlab帮助:

如果大小(M)返回[mn],则ismatrix(M)返回逻辑1(true) 非负整数值m和n,否则为逻辑0(false)

所以我检查了
size(curstate)

所以我修改了你的代码

for k=1:length(mixed_values)
  curstate=mixed_values{k};

    % Check for the [5 2 1; 1 2 3]
    if (size(curstate,1)) > 1 && (size(curstate,2)) > 1 
        disp('yes');
        disp(size(curstate));

    else
       disp('no') 
    end  
end

这实际上取决于你对矩阵的定义。在MathWorks的案例中,他们认为矩阵是具有有效大小的东西,这当然是正确的。请注意,偶数标量是大小为1x1的矩阵。你甚至可以有一个字符矩阵<代码>A=['A'b';'c'd']。我想在你的例子中,你希望矩阵是一个至少2维的数字集合。我会这样解决:

function result = TestForMatrix(m)
    t1 = isnumeric(m);
    t2 = ~isvector(m);
    result = all([t1 t2]);
end
将其当作
ismatrix
使用

if (TestForMatrix(curstate))
    disp('yes');
else
    ....

其工作方式是对数字的测试将消除字符串。第二个测试将消除向量和标量。当您发现更多需要包括或消除的内容时,您将添加这些测试。例如,假设您希望允许单元格<代码>t3=iscell(m);结果=全部([t1 t2 t3])可以在Matlab对象上进行许多逻辑测试,请参见。

非常感谢,我正在努力解决这个问题,我甚至尝试通过检查m*n事物来找到一种方法,但无法解决它。谢谢,这肯定会让我以后受益,再次感谢
if (TestForMatrix(curstate))
    disp('yes');
else
    ....