フィルターのクリア

Sparse Array - Special Command?

1 回表示 (過去 30 日間)
Martin
Martin 2013 年 11 月 12 日
コメント済み: Martin 2013 年 11 月 18 日
Hi,
I'm dealing with a sparse array. Given 2 arrays "col" and "val", I want to create a one-rowed sparse array of value val(i) in the column col(i), for all i.
What I did is:
if true
% val, col given
leng = length(val);
row = ones(1, leng);
result = sparse(row, col, val, 1, leng);
end
Is there a better way to do, without creating an array "row" in particular? Because getting the length and creating the row take a bit of time in my problem.
Thanks!
  1 件のコメント
Martin
Martin 2013 年 11 月 12 日
No ideas? :)

サインインしてコメントする。

採用された回答

Walter Roberson
Walter Roberson 2013 年 11 月 13 日
result = sparse(1, col, val);
Note: this is not exactly equivalent to what you wrote. What you wrote only allocates a 1 x leng array, but leng is the number of elements in col, not the maximum col.
For example, sparse(1, 10, 3, 1, 1) would try to create a 1 x 1 sparse matrix, but it needs a 1 x 10 sparse matrix.
  4 件のコメント
Walter Roberson
Walter Roberson 2013 年 11 月 15 日
Much faster or just "faster" ?
Martin
Martin 2013 年 11 月 18 日
In my program, the time necessary to create the matrix itself is similar, but I saved the time to create the "row" array. In particular, calculating the length of this array took time.
I'd say I saved about 25% of time but I reckon this is very problem-specific.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSparse Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by