困难在一个循环中使用“readvars”函数的不同维度的数据文件
2视图(30天)
显示旧的评论
你好,我想初始化一个单元阵列,通过将每个单元分配给readvars的输出。我有几个不同的文本文件的行数不同,但它们都有5列。
我的代码是这样的:
块=单元(13);
脉冲=单元(13);
raw_tofs =单元(13);
为指数= 1:1:13
this_pulse [this_chunk, ~, ~, this_raw_tofs] = readvars (“filename_dependent_on”+ num2str(指数));
块{指数}= this_chunk;
脉冲{指数}= this_pulse;
raw_tofs{指数}= this_raw_tofs;
结束
或者我也试着改变在for循环:
[块{指数},~,脉冲{指数},~,raw_tofs{指数}]= readvars (“filename_dependent_on”+ num2str(指数));
但是这两个给一个矩阵维度必须同意的错误。我也试过清算this_chunk的内容,this_pulse, this_raw_tofs通过设置之前= []readvars线。
我不知道如何使这项工作…
,很明显,这个循环没问题如果我13次循环任何一个文件。显然与数据点的数量在每个文件是不同的,但我不能找到一个方法来分配在那种情况下在一个循环中。
非常感谢您的帮助!谢谢你!
1评论
马克斯Alger-Meyer
2022年3月7日
的很难调试没有示例文件,但有一件事你可能尝试打破线分成三个独立的函数调用。
为指数= 1:1:13
[this_chunk, ~, ~, ~, ~] = readvars (“filename_dependent_on”+ num2str(指数));
[this_pulse ~, ~, ~, ~] = readvars (“filename_dependent_on”+ num2str(指数));
[~,~,~,~,this_raw_tofs] = readvars (“filename_dependent_on”+ num2str(指数));
块{指数}= this_chunk;
脉冲{指数}= this_pulse;
raw_tofs{指数}= this_raw_tofs;
结束
这只是一个猜测我看不到没有文件调试,实际发生了什么但我的猜测是,它不喜欢不同长度的向量,输出实例的代码只适用于文件中有相同数量的行。
接受的答案
沃斯
2022年3月8日
编辑:沃斯
2022年3月8日
我无法重现这个错误
readvars
本身,但我可以生成,错误在相同的行
readvars
使用。
我意识到“
“filename_dependent_on”+ num2str(指数)
“是占位符代码代表的实际代码,但是以防您使用类似的语法,也就是说,使用
+
(
+
)与特征向量输入,当会发生错误
num2str(索引)
有多个数字。
指数= 1;
disp (“filename_dependent_on”+ num2str(指数))%没有问题
指数= 10;
试一试
disp (“filename_dependent_on”+ num2str(指数))%的错误发生
抓我
disp (ME.message);%显示错误消息(并继续运行下面的代码)
结束
(我的MATLAB版本给你报告的错误消息,“矩阵维度必须同意。”)
原因在于,
+
把特征向量等数值向量,所以添加这些特征向量在一起,不执行字符串连接,这可能是你使用
+
(做字符串连接字符串而不是字符向量)。就像数字数组,当添加两个特征向量时,您可以添加一个向量和一个标量,但添加两个向量需要兼容的维度。
“一个”+ 1%添加一个特征向量a和1号
char (“一个”+ 1)%显示相应的字符的结果
char (“文件名”+“~”)%添加两个特征向量(一个是一个标量-好吧)
char (“文件名”+“文件名”)%添加相同大小的两个特征向量:好的
char (“文件名”+“十”)%尝试添加incompatibly-sized特征向量——错误
我的猜测是,尽快
指数
有超过一位呢
num2str(索引)
种基本得到错误,试图构建文件名字,吗
readvars
实际上是调用。(这可能是符合你的观察,它工作正常循环13倍,也许任何一个文件
指数
不是在这种情况下使用?)
如果这是错误的原因,你可以修理它通过构造文件名使用方括号,例如,
(“filename_dependent_on”num2str(指数)
如果这不是是什么引起的误差,请上传一些文件
readvars
似乎有一个问题。
3评论
沃斯
2022年3月8日
@Mackenzie Peter-Fulford Van Rossem
我很高兴现在的工作!
sprintf (“filename_dependent_on % d '、索引)