-1

我编写了以下程序来创建表combt。我正在尝试将行名称添加到此表中,但没有运气。我想添加一个包含行名的新列,每行按顺序命名,即(['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)])):

我需要它看起来像这样

4

3 回答 3

0

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

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

然后将每个元素转换为 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

最后但并非最不重要的是,您添加了行名称。请注意,您应该在循环外定义 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你可以char()再次使用。

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

my_new_matrix{m,n} 

获取该单元格内的参数。

于 2014-06-02T11:41:47.540 回答
0

感谢大家尝试提供帮助。我找到了一个非常简单的答案,它将在单独的列中添加连续的文件编号(我所要做的就是在 中添加 row.(['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'});

产生下表:

在此处输入图像描述

于 2014-06-02T15:31:40.827 回答
0

如果您只想用不同的名称初始化 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)

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

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
于 2014-06-02T11:28:05.473 回答