【问题标题】:Matlab - replicating arrays values according to occurrences arrayMatlab - 根据出现数组复制数组值
【发布时间】:2015-03-15 14:19:31
【问题描述】:

例如A = [19 20 21 22 23 24 25];B = [2 0 3 0 0 0 2];

我们如何获得一个新数组,将 B 中的每个值相应地重复 X 次?

例如,这里的答案是:[19 19 21 21 21 25 25]

请注意,我只能使用for 循环和repmat 调用。

【问题讨论】:

  • 我们不能使用任何其他“复杂”的 matlab 函数..(只有 1 个循环和基本的 matlab 函数..).. 不知道 numel/bsxfun 是什么.. 这个问题来自考试,我们试图弄清楚,但没有解决方案。
  • 你的链接很复杂:(
  • 如何定义“基本”MATLAB 函数?该链接还提供了基于cumsum 的方法,这可能更容易理解。另请查看here 以获取使用cumsum 的简单实现!
  • 不能只使用 repmat 或 for 自己吗?
  • 好的,那么您尝试了什么?显示您的代码。

标签: arrays matlab replicate


【解决方案1】:

如果只允许使用repmatfor 循环,则可以执行以下操作:

S = []; 
for idx = 1 : length(B) 
    S = [S repmat(A(idx), 1, B(idx))]; 
end

S 最初是一个空白数组,然后对于B 中的值(或A,因为它们的长度相同),只需将S 与@987654328 中的每个值连接起来@ 由B 中的相应数字重复。 S 将包含输出。

通过运行上面的例子,我得到:

S =

    19    19    21    21    21    25    25

但是,我强烈建议您使用更多矢量化方法。我会把它留给你作为练习。

祝你好运!

【讨论】:

    猜你喜欢
    • 2023-04-04
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多