Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何优化这个字符串替换代码_Matlab - Fatal编程技术网

Matlab 如何优化这个字符串替换代码

Matlab 如何优化这个字符串替换代码,matlab,Matlab,我有一个算法,它的中间步骤是用另一个子串替换一个子串。准确地说,我有一个字符串HBIN_NEW,还有一个字符串P。我想用PBIN_NEW的第1、2、3个元素替换字符串HREP的每6、7、8个元素。为此,我编写了代码 For example If PBIN_NEW='1111111101010101' and HBIN_NEW='1111100010101010' then the new string HREP should be HREP='11111111101011

我有一个算法,它的中间步骤是用另一个子串替换一个子串。准确地说,我有一个字符串HBIN_NEW,还有一个字符串P。我想用PBIN_NEW的第1、2、3个元素替换字符串HREP的每6、7、8个元素。为此,我编写了代码

     For example If PBIN_NEW='1111111101010101' and HBIN_NEW='1111100010101010' 
   then the new string HREP
   should be HREP='1111111110101101' 
      for k=1:8:262144*8
   HREP=strrep(HBIN_NEW,HBIN_NEW(k+5:k+7),PBIN_NEW(k:k+2));
end

这段代码实现上述思想是否正确。如果是的话,这个替换方案需要很长时间,有人能提出一些优化的方法吗。

这个问题的措辞仍然有点尴尬,我不确定如何得到给定措辞的示例HREP,但很可能
strep
对于听起来你试图做的事情来说是过分的。一个带有赋值的简单循环就可以了:

HREP = HBIN_NEW;
for k=1:8:length(HBIN_NEW)
   HREP(k+5:k+7) = PBIN_NEW(k:k+2);
end
但通常情况下,只列举职位分配并避免循环会更好。因此,你有这样的东西:

HREP = HBIN_NEW;
HREP(6:8:end) = PBIN_NEW(1:8:end);
HREP(7:8:end) = PBIN_NEW(2:8:end);
HREP(8:8:end) = PBIN_NEW(3:8:end);
我想这正是你想要的,或者应该让你离得足够近


最后,一点不请自来的风格建议。虽然Matlab没有非常严格的代码风格指南,但很可能使用带下划线的所有大写字母并不是命名变量的最佳方式。我个人更喜欢带下划线的小写字母,例如
pbin_new
,并且只对常量使用大写字母…

关于这个问题的措辞仍然有点尴尬,我不太确定如何在给定措辞的情况下获得示例HREP,但很可能
strep
听起来像是你在试图做的事情,太过分了。一个带有赋值的简单循环就可以了:

HREP = HBIN_NEW;
for k=1:8:length(HBIN_NEW)
   HREP(k+5:k+7) = PBIN_NEW(k:k+2);
end
但通常情况下,只列举职位分配并避免循环会更好。因此,你有这样的东西:

HREP = HBIN_NEW;
HREP(6:8:end) = PBIN_NEW(1:8:end);
HREP(7:8:end) = PBIN_NEW(2:8:end);
HREP(8:8:end) = PBIN_NEW(3:8:end);
我想这正是你想要的,或者应该让你离得足够近

最后,一点不请自来的风格建议。虽然Matlab没有非常严格的代码风格指南,但很可能使用带下划线的所有大写字母并不是命名变量的最佳方式。我个人更喜欢带下划线的小写字母,例如
pbin_new
,常量只使用大写字母