How can i decrease the execution time of a matrix classification?

I have a sparse matrix 34x2(or two column matrices of size 34).In the first column i have some double numbers and on the second column i have their id's(1-25), meaning that in both columns the non zero elements are in the same row. What i need is to create a sparse matrix 34x25 in order to classify the double numbers of the first column considering their id's.
At the moment i am using
temp1 = bsxfun(@eq,W(:,2),k);
IDClass = bsxfun(@times,temp1,W(:,1));
%where k is a vector with values 1:15
this procedure is quite costly so i need a faster way to do it but it still has to be vectorized. Any help?

 Akzeptierte Antwort

I'm not sure exactly what you want IDClass to look like, but I think you want something like this:
% Random data
rng(2)
A = [rand(5, 1), randperm(5).']
% Create a sparse matrix
S = sparse(1:size(A, 1), A(:, 2), A(:, 1))
% Display it as a full matrix
full(S)
If that's not what you want, can you show how you want the S generated from this A data to look?

1 Kommentar

That works perfect, you are a lifesaver. Thank you for your response!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by