Matlab 使用矩阵行作为向量上的索引范围?

Matlab 使用矩阵行作为向量上的索引范围?,matlab,Matlab,我有一个矩阵: A = [1 3 5 7 9 10]; 这个向量: B = zeros(1,10); 现在我想将[1:3]、[5:7]和[9:10]范围内的元素更改为1。 所以,要得到这个: C = [1 1 1 0 1 1 1 0 1 1]; 我试过: B(A(:,1):A(:,2)) = 1; 但它只是改变了第一个范围内的零 没有for循环可以完成吗 谢谢。A的第一列是开始位置,第二列是每个1序列的结束位置。用1表示开始,用-1表示结束,然后用总和 A的第一列是开始位

我有一个矩阵:

A = [1 3
    5 7
    9 10];
这个向量:

B = zeros(1,10);
现在我想将[1:3]、[5:7]和[9:10]范围内的元素更改为1。 所以,要得到这个:

C = [1 1 1 0 1 1 1 0 1 1];
我试过:

B(A(:,1):A(:,2)) = 1;
但它只是改变了第一个范围内的零

没有for循环可以完成吗

谢谢。

A的第一列是开始位置,第二列是每个1序列的结束位置。用1表示开始,用-1表示结束,然后用总和

A的第一列是开始位置,第二列是每个1序列的结束位置。用1表示开始,用-1表示结束,然后用总和


您好,您可以试试这个:

B([A(1,1):A(1,2) A(2,1):A(2,2) A(3,1):A(3,2)]) = 1;

您好,您可以试试这个:

B([A(1,1):A(1,2) A(2,1):A(2,2) A(3,1):A(3,2)]) = 1;

这样合适吗

>> f = @(x)(any(A(:,1)<=x & x<=A(:,2)));
>> i = 1:length(B)

i =

     1     2     3     4     5     6     7     8     9    10

>> arrayfun(f,i)

ans =

     1     1     1     0     1     1     1     0     1     1

这样合适吗

>> f = @(x)(any(A(:,1)<=x & x<=A(:,2)));
>> i = 1:length(B)

i =

     1     2     3     4     5     6     7     8     9    10

>> arrayfun(f,i)

ans =

     1     1     1     0     1     1     1     0     1     1

不,我不能。这是一个简单的例子。实际上,A的行数远不止这些。所以,这是不切实际的。不,我不能。这是一个简单的例子。实际上,A的行数远不止这些。所以,这是不切实际的。