我想从矩阵中删除( * )星号,并将该矩阵写入文本文件,其余元素将相互连接,没有空格或任何类型的分隔符。我写了这段代码
for b = 1 : length(out7num_r7_nt_back)
if ~(out7num_r7_nt_back(b) == '*')
out7num_r7_back(b) = '';
end
end
disp(out7num_r7_nt_back);
dlmwrite('my_data.txt',out7num_r7_nt_back, '');
我收到此错误消息:
???要移除的元素的索引超过矩阵尺寸。
答案 0 :(得分:1)
您可以使用向量化布尔索引,将循环替换为如下:
out7num_r7_nt_back = out7num_r7_nt_back(out7num_r7_nt_back(b) ~= '*');
那也应该快得多。
答案 1 :(得分:0)
for
循环(length(out7num_r7_nt_back)
)的上限值仅在 时进行评估!
假设您在变量中有'*ab'
。循环将计为3(变量长度)。在程序擦除'*'
时循环内部,你将获得长度为2的'ab'
。由于循环迭代为3,程序将尝试访问 out out7num_r7_nt_back(3)
边界。
你可以在倒退时删除字符:
...
for b = length(out7num_r7_nt_back) : -1 : 1
...
但你应该更喜欢矢量化方法,因为它更快更清晰。