Matlab中带字符串的If语句

Matlab中带字符串的If语句,matlab,Matlab,我在Matlab中有以下单元格,其中包含字母a、b、c、d的各种组合 %all combinations containing 'a' and/or 'b' G1={'a', 'ab', 'ac', 'ad', 'abc', 'acd', 'abd', 'abcd', 'b', 'bc', 'bd', 'bcd'}; %all combinations containing 'c' and/or 'd' G2={'c', 'ac', 'bc', 'cd', 'abc', 'acd', 'b

我在Matlab中有以下单元格,其中包含字母a、b、c、d的各种组合

%all combinations containing 'a' and/or 'b'
G1={'a', 'ab', 'ac', 'ad', 'abc', 'acd', 'abd', 'abcd', 'b', 'bc', 'bd', 'bcd'};  

%all combinations containing 'c' and/or 'd'
G2={'c', 'ac', 'bc', 'cd', 'abc', 'acd', 'bcd', 'abcd', 'd', 'ad', 'bd', 'abd'};

%all combinations containing 'c'
G3={'c', 'ac', 'bc', 'cd', 'acd', 'abd', 'bcd', 'abcd'}; 
然后我构建一个维度的单元格
all

allsize=size(G1,2)*size(G2,2)*size(G3,2);
包含将
G1
的一个元素与
G2
的一个元素与
G3
的一个元素匹配的所有可能方法

all=cell(allsize,3);
 count=0;

 for h=1:size(G1,2)
     for k=1:size(G2,2);
         for j=1:size(G3,2);
             count=count+1;
             all(count,1)=G1(h);
             all(count,2)=G2(k);
             all(count,3)=G3(j);

         end
     end
 end
问题:我想构造一个维度
allsize x1
的向量
check
,这样
check(l)=1
如果[
all(l,1)
包含
a
all(l,2)
包含
c
all(l,1)
包含
b
all(l,2)
包含
d
],否则为零

我在书写if条件时遇到问题

check=zeros(allsize,1);

 for l=1:allsize
     %if [all(l,1) contains a and  all(l,2) contains c] or [all(l,1) contains b and  all(l,2) contains d]
     check(l)=1;
     %end
 end
您能提供一些帮助吗?

(对于if语句,最好显示您尝试了什么,而不是一些伪代码…)

首先,使用
all
作为变量名是不好的-它是一个重要的内置函数,您可能希望使用它。。。我在下面将其重命名为
allG
。但你可能想要这样的东西:

check(l) = (any(allG{l,1}=='a') && any(allG{l,2}=='c')) || ...
           (any(allG{l,1}=='b') && any(allG{l,2}=='d'))
注意:我没有使用
if
语句,因为右侧的计算结果是一个逻辑值(真/假值),通常可以用与1和0相同的方式使用它


同样在上面,我们将字符串视为字符数组,因此类似于
'abcd'=='b'
的内容将返回一个
[0 1 0 0]
逻辑数组。。。然后我们使用
any()
查看是否有任何值为1(true)。

由于
all
具有维度
1152x3