如何在 MATLAB 中使用 for 循环创建一个新矩阵?

How to create a new matrix with a for loop in MATLAB?

我是新手。我有问题。 我有 20 (1x100) 个不同的命名向量。我想结合这些向量来创建一个带有 for 循环的 20x100 矩阵。 还有向量的例子。

namelist=["First","B","New"]
First = [1:100]
B = [1:2:200]
New = [4:4:400]
for i = 1: length(namelist)
    new_database(i,1:end) = namelist{i}
end

但是,当我想尝试这个时,我看到“结束运算符必须在数组索引表达式中使用。”错误。 我知道我可以用这个做同样的事情: "new_database=[第一;B;新]"

但我想用 for 循环来做到这一点。 你能帮我解决这个错误吗?或者你能解释一下如何做到这一点吗?

你的问题出在这一行:

new_database(i,1:end) = namelist{i}

花括号专门用于单元格,不需要像您那样使用范围索引 (i, 1:end)

通常,将字符数组或字符串分配给单元格是更好的做法。

一个问题,你用 'First'、'New' 和 'B' 范围数组做什么?

类似于:

namelist=["First","B","New"]

First = [1:100];
B = [1:2:200];
New = [4:4:400];

new_database = cell(1, length(namelist));

for i = 1: length(namelist)   % or length(new_database)
    new_database{i} = namelist(i)
end

生成此输出:

编辑:抱歉,现在我明白了您要完成的任务。您正在从一系列数组构建数据库,对吗?

根据我之前的回复,您必须考虑以下几点:

1 您的 new_database 应该是方形的。无论您传递给它的数组的维度如何,如果您从它们形成一个单元格,如果没有数据传递给这些行或列,您将总是有空单元格

2 在某些情况下,您不需要使用 for 循环,在这种情况下,简单的索引就可以解决您的案例问题。考虑以下使用 cellstr 的示例:

titles = ["Position", "Fruits", "Mythical creatures"] 
A = ["One", "Two", "Three"];
B = ["Apple", "Banana", "Durian"];
C = ["Dragon", "Cat", "Hamster"];

db = cell(4, 3);

db(1,:) = cellstr(titles)
db(2:end,1) = cellstr(A)
db(2:end,2) = cellstr(B)
db(2:end,3) = cellstr(C)

生成此输出: