【问题标题】:How can I create systematic matrices in MATLAB?如何在 MATLAB 中创建系统矩阵?
【发布时间】:2014-06-04 22:40:37
【问题描述】:

我正在设置一个脚本,我希望它系统地遍历所有可能的 2x2、3x3 和 4x4 矩阵,模 2、3、4、5、6 和 7。例如,对于 2x2 中的模 2 ,将有 16 种可能性(4^2,因为有 4 个位置,每个位置有 2 种可能性)。我很难让 MATLAB 不仅形成所有这些可能性,而且一次将它们通过我的脚本。有什么想法吗?

谢谢!

【问题讨论】:

标签: matlab loops matrix modulo


【解决方案1】:

此解决方案使用来自 matlab 文件交换的allcomb

%size
n=2
%maximum value
m=2
%generate input for allcomb
e=cell(1,n^2)
e(1:end)={[0:m-1]}
%generate all combinations.
F=reshape(allcomb(e{:}),[],n,n)

F 是一个 3D-Matrix,获得第一种可能使用:

squeeze(F(1,:,:))

【讨论】:

  • 太好了,谢谢!只是为了确保我理解,如果我将 n 提高到 3 或 4,我是否需要更改 e 使其读取为 n^3 或 F 以便它具有多个 n 值?对不起,如果这些很明显;我是 MATLAB 新手,目前只有他们的帮助文件可以帮助您!
  • n^2 是矩阵的大小。一个 nxn 矩阵有 n^2 个元素。更改为 3 并更新最后一行将允许 nxnxn 矩阵。
【解决方案2】:

this Q&A 的简单概括可以在一行中完成:

r = 2; %// number of rows
c = 2; %// number of columns
n = 2; %// considered values: 0, 1, ..., n-1

M = reshape(dec2base(0:n^(r*c)-1, n).' - '0', r,c,[]);

rcn 的结果如上:

M(:,:,1) =

     0     0
     0     0

M(:,:,2) =

     0     0
     0     1

...

M(:,:,16) =

     1     1
     1     1

【讨论】:

    猜你喜欢
    • 2017-08-11
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 2015-12-21
    • 2016-03-08
    • 2011-05-09
    • 1970-01-01
    • 2015-11-24
    相关资源
    最近更新 更多