matlab 矩阵赋值

现在两个数组已知,为data,b,又已知c(j,i)=data(b(j,i),i);在matlab里面对c进行赋值的时候,如果用两个for循环,运行速度会很慢,有没有跟优... 现在两个数组已知,为data,b,又已知c(j,i)=data(b(j,i),i);在matlab里面对c进行赋值的时候,如果用两个for循环,运行速度会很慢,有没有跟优化的方法呢? 展开
 我来答
WM_THU
2013-08-24 · TA获得超过7163个赞
知道大有可为答主
回答量:4285
采纳率:80%
帮助的人:3868万
展开全部
问题的思路是首先生成所有访问data时的二元下标组合,然后用sub2ind转换成一元索引,然后就可以向量化赋值。
[M, N] = size(b);
sub_i = repmat((1:N), [M 1]); % 构造下标i的序列
ind = sub2ind(size(data), b(:), sub_i(:));
c = data(ind);
追问
请问为什么我运行了以后,c只有一列呢?

这是原来的循环
for i=1:size(data,1)
for j=1:hangb; %hangb是b的行数
c(j,i)=data(b(j,i),i);
end
end
追答
reshape一下就可以了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式