Octave 如何创建倍频程矩阵并用默认值/初始值填充

Octave 如何创建倍频程矩阵并用默认值/初始值填充,octave,Octave,我试图找到一种最短的方法来编码一个大小为mxn的倍频程矩阵,并用默认值/初始值填充它,所有这些都在一个命令中完成 如何做到这一点?只需一行代码- 对于尺寸为m X n且默认值为v的矩阵X: X(1:m,1:n)=v 示例(对于默认值为5的矩阵2x3): (根据@Daniel的评论,您可以在上述创建命令前面加上: clear X ) 通常,如果用零填充,则零([M,N]) 如果你用一填充它,one([M,N]) 对于任何其他值k,都有很多选项,例如 X = k * ones(M,N); X =

我试图找到一种最短的方法来编码一个大小为mxn的倍频程矩阵,并用默认值/初始值填充它,所有这些都在一个命令中完成


如何做到这一点?

只需一行代码-

对于尺寸为m X n且默认值为v的矩阵X:

X(1:m,1:n)=v
示例(对于默认值为5的矩阵2x3):

(根据@Daniel的评论,您可以在上述创建命令前面加上:

clear X )

通常,如果用零填充,则
零([M,N])

如果你用一填充它,
one([M,N])

对于任何其他值
k
,都有很多选项,例如

X = k * ones(M,N);
X = repmat( k, M, N);
X = k(ones(M,N));
W.r.t,Dror的回答,这也是一个很好的方法,需要注意的是a)它需要赋值(而上述所有内容都可以在操作中使用,而不必赋值给临时变量),b)您需要确保
X
在您的工作区中不存在,否则你可能得不到你认为你得到的。如果你真的想确定,你必须先清除X

clear X; X(1:M, 1:N) = k;

我相信还有其他方法。所有这些都有不同的基准;如果您在for循环中重复执行此操作,则过去有一些建议,建议您避免使用哪种速度(例如,repmat速度较慢)。现在记不住详细信息。

这很容易导致难以跟踪的错误。如果以后需要不同大小的变量(
X(1:3,1:2)=3
),可能会得到意外结果。相反,如果总是先清除X,则可能会浪费性能。回答得不错!我记得我读过一篇文章,比较了这些不同的选项,但这是很多年前的MATLAB,因此不适用于Octave,也不适用于较新的MATLABs。
clear X; X(1:M, 1:N) = k;