matlab 将连续行名添加到使用for循环创建的表中

cwtwac6a  于 2022-11-15  发布在  Matlab
关注(0)|答案(3)|浏览(196)

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

%% Create tables.
combt = [];

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

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

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

end

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

当前表格如下所示:

我需要它看起来像这样(行名可以用(['Row' num2str(j)])来实现):

fgw7neuy

fgw7neuy1#

如果您只想用不同的名称初始化comt变量,只需这样做即可。

%% 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)

在您的情况下(确保每个条目都有一个名称):

final = dataset(combt,'ObsNames',{'a','b','c','d','wa','wb','wc','wd','xa','xb','xc','xd','y0','rsquare'});

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

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
2ekbmq32

2ekbmq322#

如果要将不同的数据格式保存到一个矩阵中,则应使用单元格。在您的示例中,创建一个新的DATA_ARRAY(您想要将其保存在其中):

my_old_size = size(my_old_data);
my_new_data= cell(my_old_size(1),my_old_size(2)+1);

然后将每个元素转换为字符串、单元格或字符。因为您不能在单元格中写入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

最后但并非最不重要的一点是,添加您的行名。请注意,您应该在循环外部定义Row-Name的常量部分,否则strcat会将每个值添加到现有名称中:

my_rowname = 'Row_';
for k=1:my_old_size(1)
  my_new_matrix(k,1) = strcat(my_rowname,num2str(k));
end

这将产生Row_1、Row_2、...、Row_(My_Old_Size)
如果需要,可以使用char(my_old_data(k,l)将数据转换为字符,而不是上面给出的字符串。行名也是如此。您可以再次使用char()来代替num2str
我将行名的定义和数据的编写分开,以便更容易理解,但对于时间相关性,我将实现代码,这样您只需对数据循环一次。此外,如果您想要再次寻址您的数据,只需使用

my_new_matrix{m,n}

才能在那个单元格里得到论点。

0lvr5msh

0lvr5msh3#

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

%% 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'});

生成下表:

相关问题