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);