Octave 八度音阶可以在表达式中组合元素和索引吗?
我想创建一个元素矩阵,每个元素在第I列中的值是第1列中值的第I次幂。使用for循环很容易,但是有没有一种方法可以在表达式中组合矩阵元素及其索引?您的意思是这样的吗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
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:我经常把行和列弄混了。更新了答案。