フィルターのクリア

Compare two vector arrays and if they match set vector array 2 = nan?

1 回表示 (過去 30 日間)
MKM
MKM 2022 年 2 月 11 日
コメント済み: Arif Hoq 2022 年 2 月 11 日
So i have two arrays the same size:
time = [0,0,0,0,2,3,4,5,5,6,7,8]';
solution = [1,2,0,0,1,1,2,2,2,0,0,0];
What would be the best way to compare the two and if both are the same make solution 0 = nan;
So the final outcome i would like is solution = [1,2,nan,nan,1,1,2,2,2,0,0,0];
would i use a function such as:
if strfind(time,solution)==0
Do something?
Thanks in adavnce!

採用された回答

Walter Roberson
Walter Roberson 2022 年 2 月 11 日
time = [0,0,0,0,2,3,4,5,5,6,7,8]
time = 1×12
0 0 0 0 2 3 4 5 5 6 7 8
solution = [1,2,0,0,1,1,2,2,2,0,0,0]
solution = 1×12
1 2 0 0 1 1 2 2 2 0 0 0
outcome = solution;
outcome(solution == 0 & time == 0) = nan
outcome = 1×12
1 2 NaN NaN 1 1 2 2 2 0 0 0
It is not clear what you want to have happen in positions where the values are equal, but the values are not 0.
  3 件のコメント
MKM
MKM 2022 年 2 月 11 日
if any(time==0 & solution == 0)
solution(time ==0 & solution==0)=nan;
else
return
end
Used this solution in the end, so the solution is - update where time and solution 0s are equal and if not return to script
Walter Roberson
Walter Roberson 2022 年 2 月 11 日
solution(time ==0 & solution==0) = nan;
if ~any(isnan(solution)); return; end

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

その他の回答 (1 件)

Arif Hoq
Arif Hoq 2022 年 2 月 11 日
編集済み: Arif Hoq 2022 年 2 月 11 日
Try this...
time = [0,0,0,0,2,3,4,5,5,6,7,8];
solution = [1,2,0,0,1,1,2,2,2,0,0,0];
[idx]=find(time==solution);
solution(idx)=[NaN NaN]
solution = 1×12
1 2 NaN NaN 1 1 2 2 2 0 0 0
  2 件のコメント
Stephen23
Stephen23 2022 年 2 月 11 日
FIND is not required, logical indexing is simpler and more efficient.
It would be better to allocate a scalar NaN.
Arif Hoq
Arif Hoq 2022 年 2 月 11 日
@Stephen Thank you very much for the clue

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

カテゴリ

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

製品


リリース

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by