我在MATLAB中有一个稀疏矩阵:
N=1000;
P=0.01;
A=sprand(N,N,P);
我希望将某些列的所有非零条目更改为1。
就是这样:
c=randi(N,[1,round(N/10)]);
A(non zeros at columns c)=1;
当然它可以在for循环中完成,但这显然不是我正在寻找的解决方案。 我尝试了几种使用nnz,nonzeros,spfun的解决方案 - 但没有使用过。 任何人都可以想出一个简单的方法吗?
谢谢, ELAD
答案 0 :(得分:1)
你可以试试这个
@ContentProvider(authority = AppDatabase.AUTHORITY,
database = AppDatabase.class,
baseContentUri = AppDatabase.BASE_CONTENT_URI)
@Database(name = AppDatabase.NAME, version = AppDatabase.VERSION)
public class AppDatabase {
public static final String NAME = "AppDatabase"; // we will add the .db extension
public static final int VERSION = 2;
public static final String AUTHORITY = "com.hashx19.pristinekashmir.dbflowcontentprovider";
public static final String BASE_CONTENT_URI = "content://"; }
答案 1 :(得分:1)
你可以这样做:
SCHED_BATCH
同样地,
SCHED_RESET_ON_FORK
或
A(:,c) = abs(sign(A(:,c))); % take the absolute value of the sign for all entries
% in the submatrix defined by the columns in c, and
% then assign the result back
这些可能不会很快,因为它们会处理这些列中的所有条目,而不仅仅是非零条目。 Dohyun's approach可能更快。
答案 2 :(得分:0)
与Luis Mendos answer相关,但有点简单
A(:,c) = ceil(A(:,c));