【问题标题】:assigning into an array within cell array分配到元胞数组中的数组
【发布时间】:2020-05-04 11:39:19
【问题描述】:

假设我有两个元胞数组ab

for k=1:3
    a{k} = nan(3, k);
end
b = {ones(1, 1), ones(1, 2), ones(1, 3)};

如何将 b 中的每个单元格分配到 a 的每个单元格的第二行?

【问题讨论】:

  • 如果我的解决方案对你有用,你能接受吗?
  • 我非常感谢您的努力,但它对我没有用。我赞成你的评论...
  • 你能澄清it did not work的意思吗?

标签: matlab cell-array


【解决方案1】:

只要有一个循环:

for i=1:size(a,2)
    a{i}(2,:) = b{i}
end

如果ab比较小,可以使用deal

[a{1}(2,:) a{2}(2,:) a{3}(2,:)] = deal(b{:});

【讨论】:

  • 这是在回答我的问题,但考虑到我问的是一个最小的问题,它会解决 k=1:50 的情况吗?
  • 虽然我真的认为你应该做一个简单的循环
  • 我对 eval 解决方案感觉不太好,但您对循环解决方案的看法可能是正确的。
  • 我只是想表明这是一种选择。我个人看不到这个或循环的替代方案。我不认为你会找到一个不同的“魔法”oneliner。在这种情况下,将内容分配给逗号分隔的输出很棘手。
  • 我会非常谨慎地建议eval,尤其是在没有任何警告的情况下。请参阅this answer of mine 和其中的参考资料,了解为什么最好尽可能避免它。要点是:由于禁用 JIT,难以调试错误和执行缓慢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-24
  • 2018-06-22
  • 2017-12-03
  • 1970-01-01
相关资源
最近更新 更多