我不是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循环更好。
正如我之前所说的那样,我不知道该搜索什么问题,这是一个非常常见的问题。 无论哪种方式,如果你至少可以告诉我搜索什么或者将我重定向到相关问题,我会很高兴。
如果您想了解更多信息或进行任何更正,请写下来。
谢谢。
答案 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
!