矩阵表达式以八度为单位从字符串中提取多个子串

时间:2014-12-11 02:12:07

标签: octave substr

给定要在Nx2矩阵R中提取的子串的索引(开始和结束字符),如何从单元格字符串中的S中提取它们?

直观地说,它会像这样工作:

octave:1> S = "123456789";
octave:2> R = [1 3; 2 5; 7 9];
octave:3> msubstr(S, R)
ans =
{"123", "2345", "789"}

1 个答案:

答案 0 :(得分:1)

使用arrayfun:

S = "123456789";
R = [1 3; 2 5; 7 9];
octave> arrayfun (@(s,e) S(s:e), R(:,1), R(:,2), "UniformOutput", false)
ans = 
{
  [1,1] = 123
  [2,1] = 2345
  [3,1] = 789
}

你也可以为此定义自己的功能:

function ret = msubstr (S, R)
  ret = arrayfun (@(s,e) S(s:e), R(:,1), R(:,2), "UniformOutput", false);
endfunction