输出参数太多

时间:2014-05-22 07:39:55

标签: matlab matrix

我不是MATLAB中非常核心的编码器,我从youtube和书籍中学到了所有东西。这可能是一个非常简单的问题,但我不知道是什么寻找答案。

在MATLAB中我试图做这样的事情。

>>[a,b,c] = [1,2,3]

我想要这样的输出。

>> a = 1 
b = 2
c = 3

所以Bsically问题是: - 用户将在编写代码时定义变量矩阵([a,b,c]),并且在代码处理过程中将显示类似矩阵,并且作为输入将询问矩阵( [1,2,3])。我不知道如何在不编写循环代码的情况下,我将从变量矩阵中获取每个变量,并通过eval函数将值保存在该变量中。

远远超过编写的代码是错误的,我知道,我可以使用“for”循环和“eval”函数来执行此操作。

但问题是没有。变量(a,b,c)永远不会是常数,我想知道MATLAB中是否存在任何内置函数或方法,它们比for循环更好。

正如我之前所说的那样,我不知道该搜索什么问题,这是一个非常常见的问题。 无论哪种方式,如果你至少可以告诉我搜索什么或者将我重定向到相关问题,我会很高兴。

如果您想了解更多信息或进行任何更正,请写下来。

谢谢。

2 个答案:

答案 0 :(得分:1)

这被称为"元组解包" (至少它是我在python中搜索的内容!)。我可以找到this thread,它解释了你可以在Octave中做到这一点(我检查过它也适用于Matlab)。您必须先将矢量转换为单元格数组:

values = num2cell([1,2,3])
[a,b,c] = values{:}

答案 1 :(得分:1)

交易功能可以为固定数量的输入执行此操作:

[A,B,C]=deal(1,2,3)

如果你不知道预先会得到多少输入,你必须做一些鬼混。这就是我想出来的:

V=[1,2,3,4,5,6,7]
if length(V)>1
    for i=1:length(V)
        S{i}=['A' num2str(i)];
        G{i}=['V(' num2str(i) ')'];
    end
    T=[S{1} ','];
    R=[G{1} ','];
    for i=2:length(V)-1
        T=[T S{i} ','];
        R=[R G{i} ','];
    end
    T=[T S{length(V)}];
    R=[R G{length(V)}];
    eval(['[' T ']=deal(' R ')'])
else
    A1=V
end

但是,当你不知道有多少会有痛苦的时候处理A1,......,An