如何在 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)
生成此输出:
我是新手。我有问题。 我有 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)
生成此输出: