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循环,运行速度会很慢,有没有跟优化的方法呢?
展开
展开全部
问题的思路是首先生成所有访问data时的二元下标组合,然后用sub2ind转换成一元索引,然后就可以向量化赋值。
[M, N] = size(b);
sub_i = repmat((1:N), [M 1]); % 构造下标i的序列
ind = sub2ind(size(data), b(:), sub_i(:));
c = data(ind);
[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一下就可以了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询