2013-03-01 91 views
0

由于我在MATLAB中完成了矩阵操作,所以有一段时间了,所以请原谅我,如果这很容易解决。MATLAB - 在没有for循环的情况下对矩阵索引执行操作

我有一些NxM矩阵A,我想对列索引A执行操作。我知道如何使用for循环来做到这一点,但是因为我正在使用MATLAB,所以我想利用MATLAB的能力来快速地对矩阵进行操作。

假设我有一个叫做myFunc的函数。有没有办法做到没有for循环以下(如用矩阵乘法):

for i=1:M 
    A(:, floor(i*myFunc())) = A(:, i) 

回答

1

你或许可以仅仅通过更换(1:M).*i*,像这样:

A(:, floor((1:M).*myFunc())) = A(:,1:M) 

注意.*做逐元素乘法而不是矩阵乘法。

1

这样行吗?

A(:,floor([1:M]*myFunc())) = A(:,1:M) 

因为我不知道你的myFunc是否也依赖于我。

+0

'myFunc()'将如何依赖于'i'? – 2013-03-02 05:02:53

+0

如果myFunc(i)对于不同的我返回不同的值,那么我们需要确保myFunc([1:M])也返回一个向量。并使用。*。 – 2013-03-02 05:25:48

+1

@GeorgeSkoptsov这个问题没有说什么参数是什么以及myFunc()返回的是什么,它可以返回一个标量或向量,如果返回一个标量,那么就不需要。如果返回一个向量,需要确保其大小与1:M相同。否则使用。*将导致错误 – 2013-03-02 05:28:45