Matlab中带字符串的If语句
我在Matlab中有以下单元格,其中包含字母a、b、c、d的各种组合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
%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