f**********g 发帖数: 107 | 1 感谢jzxu解答上一个问题,用meshgrid确实缩短了大量的运行时间。
现在需要做到以下矩阵赋值(其中I,J是已经赋值的数):
U(I,J)=0;
for i=1:I
for j=1:J-i
U(i,j)=f(i,j);
end
end
第二个循环的上限含有i。现在想把这个循环赋值改成矩阵运算。这个问题也可以用
meshgrid来搞。但是会有很多重复项,请问有更好的办法没有? | t***s 发帖数: 4666 | 2 treat it as a 1-d array.
【在 f**********g 的大作中提到】 : 感谢jzxu解答上一个问题,用meshgrid确实缩短了大量的运行时间。 : 现在需要做到以下矩阵赋值(其中I,J是已经赋值的数): : U(I,J)=0; : for i=1:I : for j=1:J-i : U(i,j)=f(i,j); : end : end : 第二个循环的上限含有i。现在想把这个循环赋值改成矩阵运算。这个问题也可以用 : meshgrid来搞。但是会有很多重复项,请问有更好的办法没有?
| f**********g 发帖数: 107 | | l*****i 发帖数: 3929 | 4 用meshgrid给整个矩阵赋值然后扔掉一半...
【在 f**********g 的大作中提到】 : 感谢jzxu解答上一个问题,用meshgrid确实缩短了大量的运行时间。 : 现在需要做到以下矩阵赋值(其中I,J是已经赋值的数): : U(I,J)=0; : for i=1:I : for j=1:J-i : U(i,j)=f(i,j); : end : end : 第二个循环的上限含有i。现在想把这个循环赋值改成矩阵运算。这个问题也可以用 : meshgrid来搞。但是会有很多重复项,请问有更好的办法没有?
| t***s 发帖数: 4666 | 5 assuming size(U) size(f) = [M, N]
temp = tril(ones(M,N), (J-M-1));
temp(1:(M-I),:) = 0;
index = (temp(end:-1:1, :) > 0);
U(index) = f(index);
【在 f**********g 的大作中提到】 : 感谢jzxu解答上一个问题,用meshgrid确实缩短了大量的运行时间。 : 现在需要做到以下矩阵赋值(其中I,J是已经赋值的数): : U(I,J)=0; : for i=1:I : for j=1:J-i : U(i,j)=f(i,j); : end : end : 第二个循环的上限含有i。现在想把这个循环赋值改成矩阵运算。这个问题也可以用 : meshgrid来搞。但是会有很多重复项,请问有更好的办法没有?
| f**********g 发帖数: 107 | 6 多谢。
【在 t***s 的大作中提到】 : assuming size(U) size(f) = [M, N] : temp = tril(ones(M,N), (J-M-1)); : temp(1:(M-I),:) = 0; : index = (temp(end:-1:1, :) > 0); : U(index) = f(index);
| t***s 发帖数: 4666 | 7 works well? i didn't test thouroughly.
【在 f**********g 的大作中提到】 : 多谢。
| f**********g 发帖数: 107 | 8 I did not use all codes, but I borrowed some ideas from them and they worked
. |
|