我编写了以下程序来创建表 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)])
实现):
答案 0 :(得分: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
答案 1 :(得分: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。因为你不能将双重写入单元格并将其写入新的位置。
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而不是上面给出的字符串。你的rownames也一样。而不是num2str
,您可以再次使用char()
。
我将行名称的定义和写入数据分开,以便更容易理解,但对于时间相关性,我会实现代码,因此您只需对数据进行一次循环。此外,如果您想再次处理数据,可以使用
my_new_matrix{m,n}
获取该单元格内的参数。
答案 2 :(得分: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'});
产生下表: