【问题标题】:Insert new values into an array将新值插入数组
【发布时间】:2013-10-16 16:20:56
【问题描述】:

我目前有一个不同长度的列向量,我想在原始数组的各个点插入另一个列向量。即我想将我的新数组添加到旧数组的开头跳过 10 个位置再次添加我的新数组,跳过另外 10 个空格并再次添加我的新数组,依此类推,直到数组结束。我可以这样做:

OffsetSign = [1:30]';
Extra = [0;0;0;0;0];
OffsetSign =[Extra;OffsetSign(1:10);Extra;OffsetSign(11:20);Extra;OffsetSign(21:30)];

但是这不适合更长的数组。对于更长的数组,有什么简单的方法吗?

【问题讨论】:

    标签: arrays matlab matrix insert vectorization


    【解决方案1】:

    这是一种方法:

    a = [1:30]';
    b = [0;0;0;0;0];
    
    a=reshape(a,10,[]);
    b=repmat(b,[1 size(a,2)])
    r=[b ; a]
    r=r(:);
    

    诀窍是将a 重塑为具有正确大小的列(每列10 个元素)的矩阵。将 b 复制到此列数,连接两者并将矩阵展平为向量...

    【讨论】:

    • 作为一个侧面,不太严重的说明:矩阵不是已经平坦了吗?我们不应该说(因为没有更好的词)“threaden to a vector”吗?或者哪个是正确的词?
    • 绝不会想到这一点!你是个天才!谢谢
    • @LuisMendo:“线性化”怎么样?因为这是线性索引和常规索引相同的形式。
    • 虽然我喜欢它,但它也有在给定点找到函数的线性逼近的意思...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    • 1970-01-01
    相关资源
    最近更新 更多