变量确定矩阵维度

时间:2017-11-05 00:44:44

标签: matlab matrix

假设我希望定义矩阵,但矩阵的维数是Matlab中的变量(v)。

如果v = 1,那么

M(1:10)= 0;

如果v = 2,那么

M(1:10,1:10)= 0;

...

我想过如何使用“重塑”这样做,但我正在摸索如何做到这一点。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

你可以做到

switch v
    case 1
       M=zeros(1,10);%matrix of size 1,10
    case 2
       M=zeros(10,10);%matrix of size 10,10
end

答案 1 :(得分:0)

对于任意v,您可以使用zeros的矢量输入形式。由于此函数的工作原理,输入v=1需要特殊处理,如果您希望它提供向量(就像您的代码中的情况一样):

N = 10;
v = 3;
if v==1
    sz = [1 N]; % or [N 1] for column vector
else
    sz = repmat(N, 1, v);
end
M = zeros(sz);

同样,如果你喜欢它在一行:

M = zeros([repmat(1, 1, v==1) repmat(N, 1, v)]); % v=1 gives a row vector

M = zeros([repmat(N, 1, v) 1]); % v=1 gives a column vector

后者有效,因为Matlab数组有infinite number of trailing singleton dimensions