Arrays 在MATLAB中同时定义多个变量

Arrays 在MATLAB中同时定义多个变量,arrays,matlab,variables,matrix,Arrays,Matlab,Variables,Matrix,我想同时定义多个变量。 例如,我想定义 a = 1 b = 2 c = 3 像这样 所以我用[a,b,c]做了一个矩阵: x = [a, b, c]; y = [1, 2, 3]; x = y 所以我想得到以下答案 a = 1 b = 2 c = 3 如果我使用 [a, b, c] = deal(1, 2, 3) 然后,我就可以 a = 1 b = 2 c = 3 但是我想用矩阵x代替[a,b,c] 所以如果我用 x = deal(1,2,3) 有一个错误 有什么解决办法吗 也许

我想同时定义多个变量。 例如,我想定义

a = 1
b = 2
c = 3
像这样

所以我用
[a,b,c]
做了一个矩阵:

x = [a, b, c];

y = [1, 2, 3];

x = y
所以我想得到以下答案

a = 1
b = 2
c = 3
如果我使用

[a, b, c] = deal(1, 2, 3)
然后,我就可以

a = 1
b = 2
c = 3
但是我想用矩阵
x
代替
[a,b,c]

所以如果我用

x = deal(1,2,3)
有一个错误


有什么解决办法吗

也许我不明白这个问题,但是如果你想使用矩阵
x
而不是
[a,b,c]
为什么不把它定义为

x = [1, 2, 3];

从你的问题来看,我觉得你把问题复杂化了。您首先要声明

a = 1;
b = 2;
c = 3;
但是根据你问题的结尾,你想要的是

x = [1, 2, 3];
如果您如上所述定义
x
,则可以引用
x
的各个元素,如

>> x(1), x(2), x(3)
ans =
     1

ans =
     2

ans =
     3

现在你有了两个世界中最好的一个定义。你可以使用
x(1)
x(2)
x(3)
来引用
a
b
c
,而你只需要用
x=[1,2,3]定义
x
一次

也许我不明白这个问题,但是如果你想用矩阵
x
而不是
[a,b,c]
为什么不把它定义为

x = [1, 2, 3];

从你的问题来看,我觉得你把问题复杂化了。您首先要声明

a = 1;
b = 2;
c = 3;
但是根据你问题的结尾,你想要的是

x = [1, 2, 3];
如果您如上所述定义
x
,则可以引用
x
的各个元素,如

>> x(1), x(2), x(3)
ans =
     1

ans =
     2

ans =
     3

现在你有了两个世界中最好的一个定义。你可以使用
x(1)
x(2)
x(3)
来引用
a
b
c
,而你只需要用
x=[1,2,3]定义
x
一次

您不能
处理成一个数字数组,但您可以
处理成一个单元格数组,然后将单元格数组中的所有元素串联起来,如下所示:

[x{1:3}] = deal(1, 2, 3); % x is a cell array {1, 2, 3}
x = [x{:}]; % x is now a numeric array [1, 2, 3]

不能将
deal
放入数值数组,但可以将
deal
放入单元格数组,然后将单元格数组中的所有元素串联起来,如下所示:

[x{1:3}] = deal(1, 2, 3); % x is a cell array {1, 2, 3}
x = [x{:}]; % x is now a numeric array [1, 2, 3]

你能给出一个用例吗?通常,在您认为需要定义多个命名变量的任何情况下,在Matlab中,最好不要使用大型矩阵、单元数组或结构。deal函数将右侧映射到左侧。在您的示例中,右侧有3个元素,而左侧只有1个向量。您的目的是让matlab将3个元素中的每一个映射到3个变量“a”、“b”和“c”,但使用deal函数这是行不通的。您能给出一个用例吗?通常,在您认为需要定义多个命名变量的任何情况下,在Matlab中,最好不要使用大型矩阵、单元数组或结构。deal函数将右侧映射到左侧。在您的示例中,右侧有3个元素,而左侧只有1个向量。您的目的是让matlab将3个元素中的每一个映射到3个变量“a”、“b”和“c”,但使用deal函数无法实现。