全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
7139 2
2012-11-19
我有两个向量a1=[1;2;3];b1=[4;5;6],不用loop,怎么生成一个[4;5;5;6;6;6]这样的向量?

有谁知道什么好点的方法吗?数据量大的时候,用loop太慢了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-11-19 14:51:41
tic;
b1 = [4;5;6];
tmp = tril(repmat(b1, 1, numel(b1)))';
tmp = tmp(tmp~=0);
toc;

tic;
b1 = [1:1000]';
tmp = tril(repmat(b1, 1, numel(b1)))';
tmp = tmp(tmp~=0);
toc;

我的机器,生成一个b=[1:1000]'的向量,需要时间0.02秒。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-11-20 06:11:49
moocow 发表于 2012-11-19 14:51
tic;
b1 = [4;5;6];
tmp = tril(repmat(b1, 1, numel(b1)))';
真不好意思,我没讲清楚。
我想生成的向量是向量a1代表次数,b1代表元素,比如a1=[3;2;1],b1=[2;3;4],那么生成的c=[2;2;2;3;3;4]这样子。
要是能不需要for语句就好了。:)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群