问题很简单,但我找不到简单的解决方案:
我想说,"是这个向量1,4,7,然后是5的任何数字?"
例如:
[1,4,7,2,6,5,8,3]
...或:
[1,4,7,2,8,5,9,2]
最后五个数字可以是任何数字,只要它们是数字。
谢谢!
答案 0 :(得分:0)
下标本身可以是Matlab中的另一个向量。所以你可以测试vector中的任何值:
x=zeros(1,10);
x(1)=1;x(2)=2; x(3)=3;x(6)=4;x(9)=5;
x % x = 1 2 3 0 0 4 0 0 5 0
L=[1:3,6,9]; %subscipt of vector v
y=[1, 2, 3, 4, 5];
isequal(x(L),y) % ans = 1
答案 1 :(得分:0)
您可以单独测试这两个条件,然后将它们与and
结合使用。
x1 = [1,4,7,2,6,5,8,3];
is147 = all(x1(1:3)==[1,4,7]);
and(is147,length(x1)==8)
我认为,对于列表,最后5个数字必须是数字,但如果不是,您可以进行额外的测试,例如isnumeric()
。此外,如果输入在列向量和行向量之间发生更改,则可以强制使用x_col = x1(:)
答案 2 :(得分:0)
这是一个解决方案,用于检查您的变量是否为向量isvector
,验证其长度为8并检查前3个元素是[1 4 7],isequal
。
>> v = [1 4 7 2 6 5 8 3];
>> isvector(v) && numel(v) == 8 && isequal(v(1:3), [1 4 7])
ans =
1
>> v = [1 4 7 2 6 5 8];
>> isvector(v) && numel(v) == 8 && isequal(v(1:3), [1 4 7])
ans =
0
>> v = [9 4 7 2 6 5 8 3];
>> isvector(v) && numel(v) == 8 && isequal(v(1:3), [1 4 7])
ans =
0
>> v = [1 4 7 2; 6 5 8 3];
>> isvector(v) && numel(v) == 8 && isequal(v(1:3), [1 4 7])
ans =
0