【问题标题】:MatLab - Padding arrays with something that wont be valued?MatLab - 用不被重视的东西填充数组?
【发布时间】:2013-04-23 23:28:12
【问题描述】:

我正在比较不同大小的数组以找到匹配项

Results = (DistancesB >= DistancesA * 0.1 & DistancesB < DistancesA * 1.5); % anything in this thres is matched

数组大小必须相同,所以padarray0。 但现在正在比较和匹配 0... 我应该做一个循环只使用结果> 0吗? 或者还有什么我可以用的吗?也许NaN

【问题讨论】:

  • 你试过NaN吗?
  • 你如何用nan填充? featuresA = padarray(DataSet2,size(MaxArray) - size(DataSet2),'post');
  • 不要使用padarray,手动操作
  • 当我说我比较数组时,我的意思是将一个数组与 200 多个其他数组进行比较,这需要很长时间并且不是很健壮
  • 查看我的答案,当我手动时,我的意思是用 padarray 使用的相同逻辑编写代码。对于一维数组,这很简单。

标签: matlab nan pad


【解决方案1】:

我总是建议阅读文档。比如padarray()可以用NaN填充:

padarray(1:3,[1,1],NaN,'post')
ans =
     1     2     3   NaN
   NaN   NaN   NaN   NaN

有关详细信息,请查看文档链接中对 padval 的说明。

【讨论】:

  • +1 不知道我是怎么错过的,因为我专门去找文档寻找它,哈哈。
  • @Dan 我个人会采纳您的手动建议以避免 padarray 的开销,但有时作为一个纯粹主义者并没有回报。
  • 是的,padarray 非常适合填充二维数组。对于 1D,它似乎没有必要。但是,如果您有工具箱,并且性能不是关键问题,那么它确实可以生成非常易读的代码。
  • 这是正确的吗? NaNArray1 = padarray(DataSet,size(MaxArray)- size(DataSet),NaN, 'post');
【解决方案2】:

NaN填充数组

首先创建与最长向量一样长的只有NaN 的向量:

PaddedA = NaN(max(length(A), length(B)), 1);
PaddedB = NaN(max(length(A), length(B)), 1);

然后用数据填充这些。较短的向量现在将在末尾用NaN 填充:

PaddedA(1:length(A)) = A;
PaddedB(1:length(B)) = B;

【讨论】:

  • 好的,你在前两行代码中遗漏了一个括号,我想我把它放在了错误的地方?
  • 我认为您的语法无效,因此我对其进行了编辑。 @Tom 现在应该可以工作了。
  • 谢谢@DennisJaheruddin,我真是瞎了眼!
猜你喜欢
  • 2023-01-26
  • 1970-01-01
  • 1970-01-01
  • 2019-03-22
  • 1970-01-01
  • 2010-11-09
  • 1970-01-01
  • 2010-10-17
  • 2018-01-19
相关资源
最近更新 更多