【问题标题】:MATLAB Easiest way to assign elements of a vector to individual variables [duplicate]MATLAB将向量元素分配给单个变量的最简单方法[重复]
【发布时间】:2011-02-23 00:22:03
【问题描述】:

可能重复:
How do I do multiple assignment in MATLAB?

假设我有一个向量p = [1 2 3]。我想要一个看起来像这样的命令:

[x y z] = p;

所以 x = p(1)、y = p(2) 和 z = p(3)。

有没有简单的方法可以做到这一点?

【问题讨论】:

标签: matlab


【解决方案1】:

好吧,事实证明没有办法把它写成一行,所以我写了一个函数。

function varargout = deal_array(arr)
    s = numel(arr);
    n = nargout;

    if n > s
        error('Insufficient number of elements in array!');
    elseif n == 0
        return;
    end

    for i = 1:n
        varargout(i) = {arr(i)}; %#ok<AGROW>
    end
end

【讨论】:

    【解决方案2】:

    你可以使用deal:

    [x y z] = deal( p(1), p(2), p(3) )

    【讨论】:

    • 嗯,这和x = p(1); y = p(2), z = p(3)一样冗长
    【解决方案3】:

    转换为元胞数组。

    pCell = num2cell(p);
    [x,y,z] = pCell{:};
    

    【讨论】:

    • 好吧,看来这是我能做的最好的了。
    • 为什么要定义 pCell:[x,y,z] = num2cell(p){:};
    • @Philipp:你可以在哪个版本的 Matlab 中做到这一点? Octave 有这个功能,但 Matlab 没有(还没有)
    • @Jonas 你是对的。我目前只使用八度音阶,我不知道其中的细微差别。
    • @Philipp:没问题。同意链索引真的很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    相关资源
    最近更新 更多