Matlab 使用isspace识别空间字符时遇到问题
救命啊!出于某种原因,我的功能不是识别所有数据集上的空格。见下文: 我在代码中使用以下函数:Matlab 使用isspace识别空间字符时遇到问题,matlab,removing-whitespace,Matlab,Removing Whitespace,救命啊!出于某种原因,我的功能不是识别所有数据集上的空格。见下文: 我在代码中使用以下函数: function [ll]=f_get_length(A) l1=length(A); for ii=1:l1 if A(ii) == ' ' ll=ii; break end end 但我得到的数据集给出了以下错误: Error in ==> f_get_length at 3 l1=length(A); ??? Output argument "ll"
function [ll]=f_get_length(A)
l1=length(A);
for ii=1:l1
if A(ii) == ' '
ll=ii;
break
end
end
但我得到的数据集给出了以下错误:
Error in ==> f_get_length at 3
l1=length(A);
??? Output argument "ll" (and maybe others) not assigned during call to
"/home/geovault-01/abutcher/scripts/meghans_codes/SdP_codes/3DKirchhof/f_get_length.m>f_get_length".
Error in ==> process_sacdataSP10_PICASSO at 62
ll=f_get_length(SS);
当我试图解决这个问题时,我发现在使用isspace
时,该空格没有被标识为空格,但以下证明在第4个字符之后有空格:
strtrim(A)
ans =
CAVN
length(A)
ans =
8
display(['test' A(6) 'test'])
test test
display(['test' A(5) 'test'])
test test
display(['test' A(4) 'test'])
testNtest
display(['test' A(7) 'test'])
test test
display(['test' A(8) 'test'])
test test
length(A)
ans =
8
strtrim(A)
ans =
CAVN
length(A)
ans =
8
isspace(A(6))
ans =
0
isspace(A)
ans =
0 0 0 0 0 0 0 0
如果输入
A
中没有空格,则不会分配输出ll
要解决该问题,应在函数末尾添加:
ll=l1
您可以使用该条件,而不是使用isspace
或更有限的A(ii)='
A(ii) <= ' ' || isspace(A(ii))
而且,正如奥利已经指出的,确保在所有可能的路径中分配ll
。也就是说,如果A='
(空)或A=char(1)
(空字符)或A='THE_REAL_STRING'
(由于前导空格,它将返回长度1),则函数将失败
此外,您可以像这样对整个内容进行矢量化:
ll = find(A <= ' ' | isspace(A), 1);
ll=find(A)有许多字符显示为空白。请尝试A(6)=''
如果返回false,则将A(6)转换为数字以查看它是什么字符。
ll = find(A <= ' ' | isspace(A), 1);