Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/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
String matlab中的矢量化字符串拼接_String_Matlab_String Concatenation - Fatal编程技术网

String 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 .... 请注意,

我正在做一个项目,我想在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 ....
请注意,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循环,这提高了效率,所以我更喜欢他的代码而不是你的代码