MATLAB:向量中的外卡(例如[1,2,3,*,*,*,*])

时间:2015-09-24 01:51:41

标签: matlab octave

问题很简单,但我找不到简单的解决方案:

我想说,"是这个向量1,4,7,然后是5的任何数字?"

例如:

[1,4,7,2,6,5,8,3]

...或:

[1,4,7,2,8,5,9,2]

最后五个数字可以是任何数字,只要它们是数字。

谢谢!

3 个答案:

答案 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