在调整matlab / octave中的节时分割数组和导出值

时间:2014-08-03 11:58:17

标签: arrays matlab arraylist grouping octave

如何调整此代码以使输出在每个部分的开头和结尾添加项目?

工作代码示例:

values = 1 : 11;
binSize = 3;
fileNum = 1;
n = numel(values);
for i = 1 : binSize : n
   part = values(i : min(n, i + binSize - 1));
   fprintf('File %d contains %s\n', fileNum, mat2str(part));
   fileNum = fileNum + 1;
end

-

Output:

File 1 contains [1 2 3]
File 2 contains [4 5 6]
File 3 contains [7 8 9]
File 4 contains [10 11]

如何调整此代码以使输出在每个部分的开头和结尾添加项目?

输出示例我正在寻找:

Output I'm looking for:

File 1 contains [1 1 1 2 3 3 3]
File 2 contains [4 4 4 5 6 6 6]
File 3 contains [7 7 7 8 9 9 9]
File 4 contains [10 10 10 11 11 11]

我这样做的原因是: 我有一系列音频波形文件,我想用它们淡入和淡出每个部分。

1 个答案:

答案 0 :(得分:0)

使用 padarray 实施来修改您的fprintf部分,该实施可以沿着行复制边框元素(结束和开头)的数据,如下所示 -

fprintf('File %d contains %s\n', fileNum, mat2str(padarray(part,[0 2],'replicate')));

现在,padarray是图像处理工具箱的一部分,如果您没有,则可以使用repmat代替,如下所示 -

part_mod = [repmat(part(1),1,2) part repmat(part(end),1,2)];
fprintf('File %d contains %s\n', fileNum, mat2str(part_mod));