Matlab 如何为坐标格式的稀疏矩阵执行单元数组的逻辑索引?

Matlab 如何为坐标格式的稀疏矩阵执行单元数组的逻辑索引?,matlab,cell-array,Matlab,Cell Array,设A为坐标格式的稀疏矩阵[row(int)col(int)val(float)]。如果需要a的上三角稀疏矩阵,则可以使用如下逻辑索引获得: A = A(A(:,1) <= A(:,2), :); A=A(A(:,1)为什么不使用matlab内置的稀疏矩阵格式 创建稀疏矩阵: >> A=sparse([1 2],[2 1],1,2,2) A = (2,1) 1 (1,2) 1 提取上三角部分: >> triu(A) ans

A
为坐标格式的稀疏矩阵
[row(int)col(int)val(float)]
。如果需要
a
的上三角稀疏矩阵,则可以使用如下逻辑索引获得:

A = A(A(:,1) <= A(:,2), :);

A=A(A(:,1)为什么不使用matlab内置的稀疏矩阵格式

创建稀疏矩阵:

>> A=sparse([1 2],[2 1],1,2,2)
A =
   (2,1)        1
   (1,2)        1
提取上三角部分:

>> triu(A)
ans =
   (1,2)        1

为什么不使用matlab内置的稀疏矩阵格式

创建稀疏矩阵:

>> A=sparse([1 2],[2 1],1,2,2)
A =
   (2,1)        1
   (1,2)        1
提取上三角部分:

>> triu(A)
ans =
   (1,2)        1

为什么不使用matlab内置的稀疏矩阵格式

创建稀疏矩阵:

>> A=sparse([1 2],[2 1],1,2,2)
A =
   (2,1)        1
   (1,2)        1
提取上三角部分:

>> triu(A)
ans =
   (1,2)        1

为什么不使用matlab内置的稀疏矩阵格式

创建稀疏矩阵:

>> A=sparse([1 2],[2 1],1,2,2)
A =
   (2,1)        1
   (1,2)        1
提取上三角部分:

>> triu(A)
ans =
   (1,2)        1

您可以使用
cell2mat
将单元格的一列转换为可用作索引列表的矩阵:

A={1,2,'top';2,1,'bottom'}
A = 
    [1]    [2]    'top'   
    [2]    [1]    'bottom'
>> A(cell2mat(A(:,1))<=cell2mat(A(:,2)),:)
ans = 
    [1]    [2]    'top'
A={1,2,'top';2,1,'bottom'}
A=
[1] [2]“顶级”
[2] [1]“底部”

>>A(cell2mat(A(:,1))您可以使用
cell2mat
将单元格的一列转换为可用作索引列表的矩阵:

A={1,2,'top';2,1,'bottom'}
A = 
    [1]    [2]    'top'   
    [2]    [1]    'bottom'
>> A(cell2mat(A(:,1))<=cell2mat(A(:,2)),:)
ans = 
    [1]    [2]    'top'
A={1,2,'top';2,1,'bottom'}
A=
[1] [2]“顶级”
[2] [1]“底部”

>>A(cell2mat(A(:,1))您可以使用
cell2mat
将单元格的一列转换为可用作索引列表的矩阵:

A={1,2,'top';2,1,'bottom'}
A = 
    [1]    [2]    'top'   
    [2]    [1]    'bottom'
>> A(cell2mat(A(:,1))<=cell2mat(A(:,2)),:)
ans = 
    [1]    [2]    'top'
A={1,2,'top';2,1,'bottom'}
A=
[1] [2]“顶级”
[2] [1]“底部”

>>A(cell2mat(A(:,1))您可以使用
cell2mat
将单元格的一列转换为可用作索引列表的矩阵:

A={1,2,'top';2,1,'bottom'}
A = 
    [1]    [2]    'top'   
    [2]    [1]    'bottom'
>> A(cell2mat(A(:,1))<=cell2mat(A(:,2)),:)
ans = 
    [1]    [2]    'top'
A={1,2,'top';2,1,'bottom'}
A=
[1] [2]“顶级”
[2] [1]“底部”
>>A(cell2mat(A(:,1))这个怎么样:

A = A(cellfun(@(x,y) x>=y, A(:,1),A(:,2)),:);
这应该只保留第一列中的值大于或等于第二列中的值的行。您可以将
x>=y
比较更改为您想要的任何内容,包括字符串比较等。

如何:

A = A(cellfun(@(x,y) x>=y, A(:,1),A(:,2)),:);
这应该只保留第一列中的值大于或等于第二列中的值的行。您可以将
x>=y
比较更改为您想要的任何内容,包括字符串比较等。

如何:

A = A(cellfun(@(x,y) x>=y, A(:,1),A(:,2)),:);
这应该只保留第一列中的值大于或等于第二列中的值的行。您可以将
x>=y
比较更改为您想要的任何内容,包括字符串比较等。

如何:

A = A(cellfun(@(x,y) x>=y, A(:,1),A(:,2)),:);

这应该只保留第一列中的值大于或等于第二列中的值的行。您可以将
x>=y
比较更改为您想要的任何内容,包括字符串比较等。

感谢您的回答和问题。我不能使用matlab内置的sprase矩阵格式,因为这些值都是字符串。谢谢你的回答和问题。我不能使用matlab内置sprase矩阵格式,因为值都是字符串。谢谢你的回答和问题。我不能使用matlab内置sprase矩阵格式,因为值都是字符串。谢谢你的回答和问题。我不能使用matlab内置sprase矩阵因为这些值都是字符串。