matlab 矩阵赋值

现在两个数组已知,为data,b,又已知c(j,i)=data(b(j,i),i);在matlab里面对c进行赋值的时候,如果用两个for循环,运行速度会很慢,有没有跟优化的方法呢?

问题的思路是首先生成所有访问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一下就可以了

温馨提示:答案为网友推荐,仅供参考