1

在 Matlab 中,我试图在 3d 矩阵中找到坐标小于某个函数的点。如果这些坐标等于某些函数,我可以写:

A(some_function1,some_function2,some_function3)=2;

但是,如果我想做类似的事情怎么办:

A(<some_function1,<some_function2,<some_function3)=2;

这是行不通的——那么在不使用“for”循环的情况下找到这些点的另一种方法是什么?不幸的是,使用“for”循环我的代码需要花费大量时间来计算。谢谢您的帮助!

4

3 回答 3

1

You can just use regular indexing to achieve this:

A(1:floor(some_function1),1:floor(some_function2),1:floor(some_function3)) = 2;

assuming you check / ensure that floor(some_function*) is smaller than the dimensions of A

于 2012-04-17T18:50:57.483 回答
1

怎么样?

A(  ceil(min(some_function1,size(A,1))),...
    ceil(min(some_function2,size(A,2))),...
    ceil(min(some_function3,size(A,3)))   );

这会将索引限制在每个数组维度的末尾

于 2012-04-17T18:49:58.663 回答
0

尝试:

A(1:size(A,1)<some_function1, 1:size(A,2)<some_function2, 1:size(A,3)<some_function3) = 2

我希望我正确地回答了你的问题。

于 2012-04-17T18:49:33.787 回答