How to convert rows to logical
1 回表示 (過去 30 日間)
古いコメントを表示
Simon Allosserie
2022 年 10 月 27 日
コメント済み: Simon Allosserie
2022 年 11 月 10 日
I am filtering a set of values in a column vector in multiple steps. In the end, I get the row numbers of the values that should be kept, eg.:
A = 1:10;
%fitering happens
r = [2 7 8]; %the rows to keep
Now for subsequent calculations, I need A with only the filtered values, and 0's in the other values. At the moment I do it like this:
filter = ~min(logical(abs(A-r(:))),[],1)
Afiltered = A.*filter
However this method isn't that elegant so I was wondering if there are some standard functions / quicker ways to get the same?
Due to the nature of the filters, it is not possible to work with masks that have the same length as A. r will always be shorter than A.
0 件のコメント
採用された回答
Star Strider
2022 年 10 月 27 日
Why not just:
A = 1:10;
%fitering happens
r = [2 7 8]; %the rows to keep
Afiltered = zeros(size(A));
Afiltered(r) = A(r)
.
2 件のコメント
Cris LaPierre
2022 年 10 月 28 日
This is likely the better answer. Here, Afiltered is assigned the values in A. In my answer, it is assigned the row numbers. It only looks correct because, in this simplified example, the elements in A are the row numbers.
その他の回答 (1 件)
Cris LaPierre
2022 年 10 月 27 日
I'm not aware of a special function for this, but perhaps a more readable way would be this?
A = 1:10;
r = [2 7 8];
Afiltered=zeros(1,length(A));
Afiltered(r)=r
参考
カテゴリ
Help Center および File Exchange で Filter Analysis についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!