如何改进(缩短)我的检查值是真正的正整数?我想先做一个整数(a),我试过
a~=floor(a) || a<=0 || imag(a)~=0
其次,我想为链表做这件事
l=struct('xpos',value,'ypos',value,'entry',value,'next',[])
l=struct('xpos',value,'ypos',value,'entry',value,'next',l)
等等。
对于列表我希望所有xpos和ypos值都是实数正整数,我试过
any(l.xpos~=floor(a) || l.xpos<=0 || imag(l.xpos)~=0 || l.ypos~=floor(l.ypos) || l.ypos<=0 || imag(l.ypos)~=0)
当我有两个要检查的列表时,这最终会很长。
答案 0 :(得分:0)
您可以简化检查并使用以下内容将其转换为匿名函数:
isPositiveInt = @(x)isscalar(x) && isnumeric(x) && abs(round(x)) == x && x > 0;
如果确保它始终是标量和数字,您可以将其简化为:
isPositiveInt = @(x)abs(round(x)) == x && x > 0;
然后,您可以轻松地对xpos
和ypos
isPositiveInt(S.xpos) && isPositiveInt(S.ypos)
要浏览“链接列表”,您只需要循环播放
while ~isempty(S)
% They they are both integers do something
if isPositiveInt(S.xpos) && isPositiveInt(S.ypos)
% Do something
end
% Go onto the next one
S = S.next;
end
作为旁注,最好避免使用小写l
作为变量,因为它看起来很像1
。在上面的示例中,我已将其切换为S
。