Matlab中字符串大小的预分配
我非常清楚如何使用1、0和cell命令预先分配矩阵大小,但是字符串呢 假设我有一个名为Matlab中字符串大小的预分配,matlab,Matlab,我非常清楚如何使用1、0和cell命令预先分配矩阵大小,但是字符串呢 假设我有一个名为data的矩阵,其每个值现在都在1-255之间,如果我想打印这些数字的ASCII字符而不是它自己的数字,我会这样做 msg=''; for i = 1 : length(data) msg=horzcat(msg,floor(data(i))); % horzcat doesn't ignore spaces end msg 在上面的代码中,Matlab在循环结束之前不知道
data
的矩阵,其每个值现在都在1-255之间,如果我想打印这些数字的ASCII字符而不是它自己的数字,我会这样做
msg='';
for i = 1 : length(data)
msg=horzcat(msg,floor(data(i))); % horzcat doesn't ignore spaces
end
msg
在上面的代码中,Matlab在循环结束之前不知道msg
的大小,我真正想做的是在循环开始之前声明变量msg
的大小
我该怎么做?您可以使用
char
预先分配字符串,就像分配矩阵一样(字符串只是一个char数组):
然而,这可能不是您所需要的(我还没有看到任何人为任何东西预先分配字符串)。考虑到这是你想要做的
假设我有一个名为data的矩阵,如果我想打印这些数字的ASCII字符而不是它自己的数字,那么现在每个值都在1-255之间
您只需执行
char(data)
即可显示ASCII/Unicode值。您可以使用char
预分配字符串,就像预分配矩阵一样(字符串只是一个字符数组):
然而,这可能不是您所需要的(我还没有看到任何人为任何东西预先分配字符串)。考虑到这是你想要做的
假设我有一个名为data的矩阵,如果我想打印这些数字的ASCII字符而不是它自己的数字,那么现在每个值都在1-255之间
您只需执行
char(data)
即可显示ASCII/Unicode值。Matlab中的字符串只是一个行向量。这有用吗?Matlab中的字符串只是一个行向量。这有帮助吗?我试过了,但它在显示为空格的字符串之前填充了不必要的0,这是因为循环没有覆盖原始向量值,而是将消息填充到该向量中。你说你没有看到任何人预分配字符串,我也没有。但是MatlabR2011B一直警告我要预先分配它的大小。我知道这不值钱,但我只想把它拿走warning@Xufyan正如我所说,这可能不是您需要的,但我回答了您提出的问题,即:“如何在MATLAB中预先分配字符串”。我不完全知道您想要做什么,因为您的代码示例不清楚,所以我按照您在文本中所说的去做。您是否按照我的建议尝试过char(data)
?这是您试图在horzcat
行中使用msg
的最佳解释(该行一次将字符串增加一个字符)。如果在数据中有浮点数,而不是整数,请执行char(floor(data))
@SufiyanGhori如果要加速,您可能必须开始将其作为字节数组写入…我尝试了这一方法,但它在显示为空格的字符串之前填充了不必要的0,这是因为循环没有覆盖原始向量值,而是将消息填充到该向量中。您说您没有看到任何人预分配字符串,我也没有。但是MatlabR2011B一直警告我要预先分配它的大小。我知道这不值钱,但我只想把它拿走warning@Xufyan正如我所说,这可能不是您需要的,但我回答了您提出的问题,即:“如何在MATLAB中预先分配字符串”。我不完全知道您想要做什么,因为您的代码示例不清楚,所以我按照您在文本中所说的去做。您是否按照我的建议尝试过char(data)
?这是您试图在horzcat
行中使用msg
的最佳解释(该行一次将字符串增加一个字符)。如果在数据中有浮点数,而不是整数,请执行char(floor(data))
@SufiyanGhori如果要加速,可能必须开始将其作为字节数组写入。。。
msg = char(zeros(100,1));