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
....