how can i reshape an indexed vector
3 ビュー (過去 30 日間)
古いコメントを表示
Hello,
I have the following problem:
Q % e.g. 300 x 300 matrix
M % e.g. 300 x 300 matrix
omega=find(Q); % omega becomes a 86567x1 vector
b= M(omega);% b is also a 86567x1 vector
Is there a way to reshape b to have the same dimension as Q?
0 件のコメント
採用された回答
Ameer Hamza
2020 年 11 月 2 日
編集済み: Ameer Hamza
2020 年 11 月 2 日
Q has 90000 elements, whereas b has 86567 elements. Direct reshaping is not possible. I guess you are trying to do something like this
Q % e.g. 300 x 300 matrix
M % e.g. 300 x 300 matrix
b = M.*Q
It an element in Q is zero, then it will multiply the corresponding element in M with 0 too.
3 件のコメント
Ameer Hamza
2020 年 11 月 2 日
Ok, In that case, you can do something like this
Q = randi([0 1], 300); % e.g. 300 x 300 matrix
M = rand(300); % e.g. 300 x 300 matrix
omega=find(Q); % omega becomes a 86567x1 vector
b = M(omega);% b is also a 86567x1 vector
% apply your algorithm on b vector
B = zeros(size(Q));
B(Q~=0) = b;
B has same size as Q.
その他の回答 (1 件)
KSSV
2020 年 11 月 2 日
Whn you use find you will get the global indices in the form of column array...YOu can use logical indexing, so that you can have your matrix dimensions intact with 1 where condition is obeyed and 0 where condition is not.
omega = Q~=0;
参考
カテゴリ
Help Center および File Exchange で Matrix Indexing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!