Octave 八度音阶可以在表达式中组合元素和索引吗?

Octave 八度音阶可以在表达式中组合元素和索引吗?,octave,Octave,我想创建一个元素矩阵,每个元素在第I列中的值是第1列中值的第I次幂。使用for循环很容易,但是有没有一种方法可以在表达式中组合矩阵元素及其索引?您的意思是这样的吗 M = M(:,1) .^ (1:size(M,2)); 很容易生成一组索引来进行操作和/或操作 注意:对于旧版本的MATLAB,上面给出了一个错误,您需要使用bsxfun: M = bsxfun(@power, M(:,1), 1:size(M,2)); 注2:如果您的输入是v=[3;5;7]和n=3,则可以将上述内容转换为 M

我想创建一个元素矩阵,每个元素在第I列中的值是第1列中值的第I次幂。使用for循环很容易,但是有没有一种方法可以在表达式中组合矩阵元素及其索引?

您的意思是这样的吗

M = M(:,1) .^ (1:size(M,2));
很容易生成一组索引来进行操作和/或操作

注意:对于旧版本的MATLAB,上面给出了一个错误,您需要使用
bsxfun

M = bsxfun(@power, M(:,1), 1:size(M,2));
注2:如果您的输入是
v=[3;5;7]
n=3
,则可以将上述内容转换为

M = v .^ (1:n);
那么这个呢:

F = @(x, n) bsxfun (@realpow, x(:), 1:n);
例如:

>> F ([3;5;7], 3)
ans =
     3     9    27
     5    25   125
     7    49   343

有点像,但是您仍然显式地为赋值(2)指定列,并且无法在赋值中引用它(您使用的是矩阵大小,而不是当前列索引)。我想把([3;5;7],3)转换成没有for循环的392725512574943。(降价说明显示两个空格会让我换行,但这不会发生。对不起。)@ockham:我经常把行和列弄混了。更新了答案。