【问题标题】:Matlab code that outputs several matrices输出多个矩阵的 Matlab 代码
【发布时间】:2012-01-03 22:14:17
【问题描述】:

我正在尝试编写一个 Matlab 代码,给定一个矩阵,输出 3 个矩阵(根据一些规则)。虽然我很难让它工作 - 我无法输出带有矩阵作为条目的向量。我收到错误消息:

???在赋值 A(I) = B 中,B 和 I 中的元素数 必须相同。

我该怎么做呢?

【问题讨论】:

  • 请向我们展示您已经获得的代码(相关部分)

标签: matlab


【解决方案1】:

你可以写

function [A B C] = myFunction(X)
    A = X;
    B = 2 * X;
    C = 3 * X;
end

并调用它

[a b c] = myFunction(ones(2))

如果您不想要所有输出,只需调用它

a = myFunction(ones(2))

[a b] = myFunction(ones(2))

只获取第一个参数,或者只获取前两个参数。

【讨论】:

  • 谢谢。是否可以对此进行调整,以便矩阵输出的数量最多为 3 个?
  • 谢谢。我意识到我应该更具体:有时 myFunction 会输出 1 个矩阵,有时会输出 2 个,有时会输出 3 个(取决于输入矩阵)。我想在我正在编写的另一个函数中调用 myFunction,然后使用 MyFunction 输出的矩阵。我事先不“知道” myFunction 会给我多少参数。我怎样才能解决这个问题?
  • 我想我已经设法通过将“空”输出设置为 0 来使其工作。换句话说,如果 MyFunction(X) 应该只需要记录 2 个矩阵(比如 A 和 C) ,我设置 B = 0。在我的另一个函数(调用 MyFunction)中,我可以使用 T = [A B C];索引 = 查找(T); T = T(指数);删除 0.
  • 我不禁觉得你把事情复杂化了。如果您可以编辑您的问题以包含您实际尝试解决的问题(而不是您认为您需要做些什么来解决这个问题),那么我可能会更有帮助.
【解决方案2】:

您也可以使用单元格:

A=cell(1,3); %% or A=cell(1,2); if you want to output only 2 matrices
A{1}=B;
A{2}=C;
A{3}=D;

如果您的矩阵都具有相同的大小,您也可以将它们连接起来:

A=zeros(m,n,3);
A(:,:,1)=B;
A(:,:,2)=C;
A(:,:,3)=D;

【讨论】:

    【解决方案3】:

    函数声明:

     function [A, B, C] = something (Input_mat)
     %Do whatever needs to be done here, for example:
     A= Input_mat;
     B= Input_mat';
     C= ones(18);
    

    然后当你调用它时使用:

     [A,B,C] = something (Some_mat)
    

    A、B、C 已填满。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 2013-08-08
      • 2023-03-23
      相关资源
      最近更新 更多