Tcl 将列表拆分为多个子列表,更改一个子列表,然后将所有子列表重新合并为一个新列表?
我必须为执行以下步骤编写代码Tcl 将列表拆分为多个子列表,更改一个子列表,然后将所有子列表重新合并为一个新列表?,tcl,tk,Tcl,Tk,我必须为执行以下步骤编写代码 加载文件并将文件内容保存到列表中。(该文件包含一列和1223行数字,例如在Matlab代码中1:1:1223) 自动将列表拆分为多个子列表。(假设每个子列表有100个数字,即1223/100=12.23(大约13子列表)) 增加特定子列表中的步长(例如子列表编号3内容从201:1:300增加到201:0.5:300) 更改特定子列表后,合并所有列表以形成单个列表 我已经完成了第一步,我正在努力完成第2步、第3步和第4步。我找不到在tcl中实现的方法(我是tcl的新手
1:1:1223
)1223/100=12.23
(大约13
子列表))3
内容从201:1:300
增加到201:0.5:300
)单元
概念,整个过程变得更简单)
clc
清除所有
全部关闭
数据_初始值=1:1:1223;
_列表中的元素_=100;
%将列表划分为多个子列表
总计子列表=楼层(长度(数据初始)/元素列表中的元素);
if((总子列表*元素列表中的元素)<长度(数据初始值))
_子列表总数=_子列表总数+1;
结束
对于i=1:总计_子列表
子列表\u Begin\u RowID=(i-1)*列表中的元素\u+1;
子列表\u End\u RowID=i*元素\u在\u列表中;
如果(i<总_子列表)
子列表{i}=Data_Initial(:,子列表_Begin_RowID:Sublist_End_RowID);
其他的
子列表{i}=Data_Initial(:,子列表_Begin_RowID:end,:);
结束
结束
%更改名单第三号
K=3;
A=子列表{K};
A=A(1):0.5:A(结束);
子列表{K}=A;
%将所有列表重新加入到新数据中
数据_New=[];
对于i=1:长度(子列表)
Data_New=horzcat(Data_New,子列表{i});
结束
有人能帮我做第2、3和4步吗
加载文件并将文件内容保存到列表中
使用和命令
自动将列表拆分为多个子列表
请参见前面的回答:
增加特定子列表中的步长
您想看看Tcl,它允许使用Tcl基于零的索引表达式访问和操纵子列表的结构
% set superList [list [list 201 1 300] [list 202 1 300] [list 203 1 300]]
{201 1 300} {202 1 300} {203 1 300}
% lset superList 2 1 0.5
{201 1 300} {202 1 300} {203 0.5 300}
更改特定子列表后,合并所有列表以形成
单一列表
实现这一点的一种方法是结合使用和(解析时间)扩展运算符{*}
:
% concat {*}$superList
201 1 300 202 1 300 203 0.5 300
但这也取决于超级列表中的嵌套级别:请参见如果可行,最好根据步骤(2)和(3)中的要求计算特定位置,然后使用
lset
一次原始列表中的计算位置。非常感谢您提供答案。这非常有帮助,我正在根据您的答案实现代码。
% concat {*}$superList
201 1 300 202 1 300 203 0.5 300