String matlab中的矢量化字符串拼接
我正在做一个项目,我想在Matlab中对这些代码行进行矢量化(如果可能):String matlab中的矢量化字符串拼接,string,matlab,string-concatenation,String,Matlab,String Concatenation,我正在做一个项目,我想在Matlab中对这些代码行进行矢量化(如果可能): for j=1:length(image_feature(i,:)) string1b=strcat(num2str(j),':',num2str(image_feature(i,j))); write_file1b=[write_file1b string1b ' ']; end 基本上,我希望通过以下方式获得一个输出字符串: 1:Value1 2:Value2 3:Value3 .... 请注意,
for j=1:length(image_feature(i,:))
string1b=strcat(num2str(j),':',num2str(image_feature(i,j)));
write_file1b=[write_file1b string1b ' '];
end
基本上,我希望通过以下方式获得一个输出字符串:
1:Value1 2:Value2 3:Value3 ....
请注意,ValueX是一个数字,因此一个真实的示例是如下输出:
1:23.2 2:34.3 3:110.8
这可能吗?我正在考虑创建另一个值为1到j的向量,另一个值为“:”的j长向量和一个num2str(image_feature(I,:)),然后希望有一个函数f(如向量化的strcat),如果我这样做:
f(num2str(1:j),colon_vector,num2str(image_feature(i,:)))
我不确定我是否理解你的问题,但这也许会有所帮助
val=[23.2 34.3 110.8]
output = [1:length(val); val]
sprintf('%i: %f ',output)
作为输出,我得到
1: 23.200000 2: 34.300000 3: 110.800000
我不确定我是否理解你的问题,但也许这会有所帮助
val=[23.2 34.3 110.8]
output = [1:length(val); val]
sprintf('%i: %f ',output)
作为输出,我得到
1: 23.200000 2: 34.300000 3: 110.800000
可以对所有数组操作进行矢量化,以非常有效地创建一个数组或数字矩阵,但由于MATLAB中字符串的性质,无法对输出字符串的创建进行矢量化。理论上,如果你有一个固定长度的字符串,比如C++,你可以同时写入字符串中的不同内存位置,但这不是Matlab支持的。即使是,看起来您有可变长度的数字,所以即使是这样也很困难(除非您要为每个数字对分配特定数量的空间,从而导致数字对之间的可变长度空间。看起来您不想这样做,因为您的示例在所有数字对之间正好有一个空间)
如果您对高效地创建向量感兴趣,twerdster提供的答案可以实现这一点,但即使在该代码中,sprintf语句也不是并发的。他的代码确实摆脱了for循环,这提高了效率,因此我更喜欢他的代码而不是你的代码。你可以对所有数组操作进行矢量化,以非常有效地创建一个数组或数字矩阵,但由于MATLAB中字符串的本质,你无法对输出字符串的创建进行矢量化。理论上,如果你有一个固定长度的字符串,比如C++,你可以同时写入字符串中的不同内存位置,但这不是Matlab支持的。即使是,看起来您有可变长度的数字,所以即使是这样也很困难(除非您要为每个数字对分配特定数量的空间,从而导致数字对之间的可变长度空间。看起来您不想这样做,因为您的示例在所有数字对之间正好有一个空间) 如果您对高效地创建向量感兴趣,twerdster提供的答案可以实现这一点,但即使在该代码中,sprintf语句也不是并发的。他的代码确实去掉了for循环,这提高了效率,所以我更喜欢他的代码而不是你的代码