Matlab 将顺序行名称添加到使用for循环创建的表中

Matlab 将顺序行名称添加到使用for循环创建的表中,matlab,for-loop,rowname,Matlab,For Loop,Rowname,我编写了以下程序来创建表combt。我正在尝试将行名称添加到此表中,但没有成功。我想添加一个新列,其中包含行名称和按顺序命名的每一行,即(['row'num2str(j)]) 当前表如下所示: 我需要它看起来像这样(行名称可以通过(['row'num2str(j)])实现): 如果只想用不同的名称初始化combt变量,只需执行此操作 %% Loop. for i = [224:231, 271:281]; j = sprintf('%04d', i) %% Export co

我编写了以下程序来创建表combt。我正在尝试将行名称添加到此表中,但没有成功。我想添加一个新列,其中包含行名称和按顺序命名的每一行,即
(['row'num2str(j)])

当前表如下所示:

我需要它看起来像这样(行名称可以通过
(['row'num2str(j)])实现)


如果只想用不同的名称初始化combt变量,只需执行此操作

%% Loop.
for i = [224:231, 271:281];
    j = sprintf('%04d', i)

    %% Export combined variables to table.
    combt.(['comb' j])]=[];

end
如果要为条目命名,请执行以下操作:

aaa=1:10;
for i=1:length(aaa)
    names{i}=['c',num2str(i)];
end
aaa_dataset = dataset(aaa','ObsNames',names)
在您的情况下(确保每个条目都有一个名称):

如果要将名称添加到矩阵中:

a=rand(10,10);
for i=1:10
    names{i}=['c',num2str(i)];
end

a_cell=cell(size(a,1),size(a,2)+1);
a_cell(1:end,2:end)=num2cell(a);
a_cell(1:end,1)=names

如果要将不同的数据格式保存到一个矩阵中,则应使用单元格。在您的情况下,创建一个新的数据_数组(您要保存它的位置):

然后将每个元素转换为str、cell或char。因为你不能把double写进单元格,然后把它写到新的地方

for k=1:my_old_size(1)
  for l=1:my_old_size(2)
    my_new_data(k,l+1)= {my_old_data(k,l)};
  end
end
最后但并非最不重要的一点是添加行名称。请注意,您应该在循环之外定义行名称的常量部分,否则strcat会将每个值添加到现有名称中:

my_rowname = 'Row_';
for k=1:my_old_size(1)
  my_new_matrix(k,1) = strcat(my_rowname,num2str(k));
end
这将导致第1行、第2行、…、第1行(我的旧尺寸)
如果需要,您可以使用
char(my_old_data(k,l)
将数据转换为char而不是上面给出的字符串。行名也是如此。您可以再次使用
char()
而不是
num2str


我拆分了行名称的定义并编写了数据,以便更容易理解,但为了时间相关性,我将实现代码,以便您只在数据上循环一次。此外,如果您想再次处理数据,您可以使用

my_new_matrix{m,n} 

我找到了一个非常简单的答案,将连续的文件号添加到单独的列中(我所要做的就是添加
行。(['row'j])=[I,comb.['comb'j])]
当然还有另一个列名
'row'
final=dataset中({combt'row','a','b','c','d','wa','wb','wc','wd','xa','xb','xc','xd','y0','rsquare'});

给予:

%% Create tables.
combt = [];

%% Loop.
for i = [224:231, 271:281];
    j = sprintf('%04d', i)

%% Name the fit results sequentially.
comb.(['comb' j]) = cfit(fitresult);

%% Add a column.
row.(['row' j]) = [i , comb.(['comb' j])]


%% Export combined variables to table.
combt = [combt;row.(['row' j])];

end

%% Name the columns.
final = dataset({combt 'row', 'a','b','c','d','wa','wb','wc','wd','xa','xb','xc','xd','y0','rsquare'});
得出下表:


抱歉,我不明白您想要什么。是否要创建一个包含字段(['comb'j])的结构“combt”?或者你想创建一个数据集,每个条目的名称都不同?或者你有一个
20x300
矩阵,你想把它改成
21x300
,其中旧条目被发送回一个位置,新的第一行包括你想计算的行名?我通过添加图片更新了帖子我希望我的结果是什么样子。只有当你想在那一行有数字时,这才有效。在你上面给出的想要的结果的图片中,你说:“Row227”。如果你想这样,请检查我的解决方案。
my_rowname = 'Row_';
for k=1:my_old_size(1)
  my_new_matrix(k,1) = strcat(my_rowname,num2str(k));
end
my_new_matrix{m,n} 
%% Create tables.
combt = [];

%% Loop.
for i = [224:231, 271:281];
    j = sprintf('%04d', i)

%% Name the fit results sequentially.
comb.(['comb' j]) = cfit(fitresult);

%% Add a column.
row.(['row' j]) = [i , comb.(['comb' j])]


%% Export combined variables to table.
combt = [combt;row.(['row' j])];

end

%% Name the columns.
final = dataset({combt 'row', 'a','b','c','d','wa','wb','wc','wd','xa','xb','xc','xd','y0','rsquare'});