matlab维列向量,matlab一个m维列向量随机插入n个0该怎么写代码

匿名用户

1级

2016-12-17 回答

m = 20;

n = 4;

vec = 1:m;

cou = 0;

pos = zeros(1,n);

while cou < n

tem = round(m*rand)+1;

if ~ismember(tem,pos)

pos(cou+1) = tem;

cou = cou+1;

end

if cou == n

break;

end

end

pos = sort(pos);

pos1 = [1 pos];

pos2 = [pos m+1];

pos3 = pos2-pos1;

pos3(find(pos3 == 0)) = [];

tran = mat2cell(vec,1,pos3);

len = length(tran);

if len == n-1

for i = 1:2:2*n-1

result{i} = [0];

end

for i = 2:2:2*n-1

result{i} = tran{i/2};

end

end

if len == n

if pos(1) == 1

for i = 1:2:2*n

result{i} = [0];

end

for i = 2:2:2*n

result{i} = tran{i/2};

end

else

for i = 1:2:2*n

result{i} = tran{(i+1)/2};

end

for i = 2:2:2*n

result{i} = [0];

end

end

end

if len == n+1

for i = 1:2:2*n+1

result{i} = tran{(i+1)/2};

end

for i = 2:2:2*n+1

result{i} = [0];

end

end

result = cell2mat(result)

追答:

插入数量n可以改,但要少于等于m+1。被插入的向量vec也可以改,注意同时改下向量的维数m。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值