matlab 不同长度的向量放入一个矩阵,Matlab:将不同长度的行叠加到矩阵上

你可以这样做:

A = rand(4,6); %// example data

x = [1; 2; 1; 3]; %// example data

y = [1; 2; 1; 2]; %// example data

[M N] = size(A);

col = 1:N;

B = A.* ( bsxfun(@gt, col, x) & bsxfun(@le, col, (N-y)) );

这个例子的结果是:

>> A

A =

0.0168 0.8797 0.7367 0.9859 0.5385 0.9745

0.9274 0.4161 0.0567 0.0649 0.7961 0.1616

0.3935 0.8690 0.8386 0.0308 0.5494 0.5525

0.7615 0.1895 0.0002 0.0919 0.7167 0.6101

>> B

B =

0 0.8797 0.7367 0.9859 0.5385 0

0 0 0.0567 0.0649 0 0

0 0.8690 0.8386 0.0308 0.5494 0

0 0 0 0.0919 0 0

如果在主循环的所有迭代中 x 和 y 相同,则可以通过在循环之前计算掩码来节省时间:

[M N] = size(A);

col = 1:N;

mask = bsxfun(@gt, col, x) & bsxfun(@le, col, (N-y));

然后在每次迭代时你只需要应用预先计算的掩码:

B = A.*mask;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值