gpt4 book ai didi

arrays - MATLAB 元胞数组到单个变量

转载 作者:太空宇宙 更新时间:2023-11-03 20:26:39 31 4
gpt4 key购买 nike

我目前有一个正在批量运行的功能。它将结果输出到元胞数组。我想将元胞数组的每个输出导出到它们自己的变量。

因此我有一个变量 id 记录每一层的 ID。此过程可以手动进行,如下所示:

>> output = 

[300x300x2 double] [300x300x2 double] [300x300x2 double]

>> [a1,a2,a3]=deal(output{:});

其中a后面的数字代表ID。是否可以自动执行此命令,以便用户可以设置前缀(在本例中为:a)并自动填写 id?比如,我可以按如下方式设置变量,并在 deal 命令中使用它们来命名我的新变量?

>> id =

1 2 3

>> prefix =

a

有什么想法吗?谢谢。

最佳答案

您可以将自己的自定义表达式构造为字符串,然后使用 eval()(如果它在函数中并且您想返回,则使用 evalin())对其求值输出到您的工作区)。

function deal_output(output, id, prefix)

id = id(:);
vars = strcat(prefix, cellstr(num2str(id)))';
myexpr = ['[', sprintf('%s,', vars{1:end-1}), vars{end}, '] = deal(output{:})'];

evalin('caller', myexpr)
>> output = num2cell(1:3);
>> id = 1:3;
>> prefix = 'a';
>> deal_output(output, id, prefix)

a1 =

4


a2 =

5


a3 =

6

同时检查 FileExchange 上的 join.m 文件以避免丑陋的 sprintf

关于arrays - MATLAB 元胞数组到单个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7997333/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com