Matlab 没有真正的字符串,它们有 char 数组。与几乎任何编程语言一样,Matlab 无法在不知道要分配多少内存的情况下定义变量。 Java 解决方案如下所示:
String str[] = {"I","am","a","string"};
类似于c++的解决方案:
std::string str[] = {"I","am","another","string"};
c 的解决方案看起来不同,但通常与 c++ 中的解决方案相同:
const char* str[] = {"I","am","a","c-type","string"};
然而,尽管表面上看,这些在本质上都是相同的,因为它们都知道要分配多少数据,即使它们不会被启动。特别是你可以写:
String str[3];
// Initialize element with an any length string.
原因是存储在每个元素中的内存在java中通过其引用存储,在c和c++中通过指针存储。因此,根据操作系统,每个元素是 4(32 位)或 8(64 位)字节。
但是,在 Matlab 矩阵中,数据是按值存储的。这使得无法将N 字符数组存储在1xN 或Nx1 矩阵中。矩阵中的每个元素只允许与 char 大小相同且为 char 类型。这意味着,如果您使用字符串,则需要使用数据结构 cell(也由 Benoit_11 建议),它在每个元素中存储对任何 Matlab 对象的引用。
k = 1:30;
Name = cell(length(k),1);
for i=k
Name{i,1}=sprintf('String_%i',i);
end
希望解释对您有意义。我假设根据您的尝试,您至少有一些编程经验,至少使用过 matlab 以外的一种语言。