Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB-在没有for循环的情况下对矩阵索引执行操作_Matlab_For Loop_Matrix_Indices - Fatal编程技术网

MATLAB-在没有for循环的情况下对矩阵索引执行操作

MATLAB-在没有for循环的情况下对矩阵索引执行操作,matlab,for-loop,matrix,indices,Matlab,For Loop,Matrix,Indices,我已经有一段时间没有在MATLAB中进行矩阵运算了,所以如果这很容易解决,请原谅我 我有一些NxM矩阵A,我想对A的列索引执行一个操作。我知道如何使用for循环来实现这一点,但由于我使用的是MATLAB,所以我想利用MATLAB快速对矩阵进行运算的能力 假设我有一个名为myFunc的函数。是否有一种方法可以在不使用for循环的情况下执行以下操作(例如使用矩阵乘法): 这样行吗 A(:,floor([1:M]*myFunc())) = A(:,1:M) 因为我不知道您的myFunc是否也依赖于I

我已经有一段时间没有在MATLAB中进行矩阵运算了,所以如果这很容易解决,请原谅我

我有一些NxM矩阵
A
,我想对
A
的列索引执行一个操作。我知道如何使用for循环来实现这一点,但由于我使用的是MATLAB,所以我想利用MATLAB快速对矩阵进行运算的能力

假设我有一个名为
myFunc
的函数。是否有一种方法可以在不使用
for
循环的情况下执行以下操作(例如使用矩阵乘法):

这样行吗

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

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

您可以用
(1:M)替换
I*
。*
,如下所示:

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

请注意,
*
执行元素乘法而不是矩阵乘法。

如何依赖于
i
?如果不同i的myFunc(i)返回不同的值,那么我们需要确保myFunc([1:M])也返回向量。和使用。*@GeorgeSkoptsov这个问题没有提到参数是什么以及myFunc()将返回什么,它可以返回标量或向量,如果返回标量,则不需要使用。*;如果返回向量,则需要确保其大小与1:M相同。否则使用。*将导致错误
A(:, floor((1:M).*myFunc())) = A(:,1:M)