我有一个矩阵(名称为'im'
),如下所示:
矩阵仅包含NaNs
和字符‘A+’, ‘A-‘, ‘B+’ and ‘B-‘
,但可以具有尽可能多的行。我需要找到(逐行)任何jPositions
在我至少有任何一个‘A+’ and ‘B+’
,或‘A+‘ and ‘B-‘
,或‘A-‘, and ‘B-‘
,或'A-' and 'B+'
。我也希望将这些位置存储在另一个位置,matrix P
如下所示。
Matrix P
有,no. of rows = k
但k从一开始就未知。需要注意的是2,3和4中所示的matrix P
表示jPositions
从'im'
该感兴趣的满足条件。
我在下面有这个伪代码(虽然不确定是否正确),但是我在努力寻找如何编写此代码的方法。
For I = 1: size(im, 2) If any of q, r, s, t, u has at least one of ‘A+’ or ‘A-‘, and any of q, r, s, t, u has at least one of ‘B+’ or ‘B-‘, Then: -select that position. -Store the result in matrix P end end
请对此有任何帮助,建议或意见,不胜感激?先感谢您。
可能会有一个更优雅的解决方案,但这应该可行:
有你的矩阵:
im = {NaN NaN 'B-' NaN NaN; 'A-' NaN NaN 'B+' NaN; NaN 'A+' 'B+' NaN 'B-'; NaN NaN NaN 'B-' 'A+'};
您可以使用以下方式找到您的职位:
jPositions = find( ( any(strcmp('A+', im),2) | any(strcmp('A-', im),2) ) & ( any(strcmp('B+', im),2) | any(strcmp('B-', im),2)) );
strcmp返回逻辑矩阵。任何以2作为第二个参数的参数,将返回一个逻辑向量,该逻辑向量指示每行包含字符串的天气。然后使用逻辑运算符将它们组合在一起,并找到返回正确的行的索引。
这将返回:
jPositions = 2 3 4
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句