在MATLAB中用try设置中频的条件

在MATLAB中用try设置中频的条件,matlab,if-statement,try-catch,Matlab,If Statement,Try Catch,我使用try来避免索引超过矩阵维度。查看文件列表时出错。它实现了我对它的期望: >> try strcmp(listFiles(6).name(1:9), 'file_name') , catch false, end ans = 1 >> try strcmp(listFiles(5).name(1:9), 'file_name') , catch false, end ans = 0 但是,如果我想在if中使用它,作为以下条件: pa

我使用
try
来避免
索引超过矩阵维度。
查看文件列表时出错。它实现了我对它的期望:

>> try strcmp(listFiles(6).name(1:9), 'file_name') , catch false, end

ans =

     1

>> try strcmp(listFiles(5).name(1:9), 'file_name')  , catch false, end

ans =

     0
但是,如果我想在
if
中使用它,作为以下条件:

path = 'folder';
listFiles = dir(path);

for i = 1:length(listFiles)
    if (try strcmp(listFiles(i).name(1:9), 'file_name')  , catch false, end)
        [...]
    end
end
它返回以下错误
保留字的无效用法

是否有一种方法将其强制插入,或者我必须使用自变量?

尝试以下操作

for i = 1:length(listFiles)
try strcmp(listFiles(i).name(1:9), 'file_name')   
    [...] 
catch false,
end
end 

try
没有输出值,因此
if
不能用作条件

try
有自己的
if
子句,所以

try
  % Commands
catch
  % Different commands
end
工作原理类似于如果
%命令中出现错误
,则
中断
并运行
%不同的命令

因此,这段代码应该起到以下作用:

path = 'folder';
listFiles = dir(path);

for ii = 1:length(listFiles)
  try
    strcmp(listFiles(ii).name(1:9), 'file_name')
    % Commands if strcmp does not fail
  catch
    % Commands if strcmp (or any other command) fails
  end
end

try
首先
try s=strcmp(…),抓住。。。结束
然后做你的
如果
如果s,…,结束
。是的,这就是我最后要做的,有没有办法避免这个自变量?你有没有什么特别的原因想要避免额外的变量?我只是想让它最小化。我更想知道的是,我以后是否也可以在其他情况下使用此方法。是什么原因导致了错误,
名称(1:9)
?为什么不
name(1:min(9,end))
获取前9个字符,或者如果少于9个字符,则获取所有字符?或者在if语句中使用更明确的条件。我认为使用try是一个坏主意,会损害代码的可读性。请提供一个例子,说明您预计该检查何时会失败。这并不能解决问题,因为它在算法上不相似。为什么不呢?我没有在那里找到“if”的位置,好像try之后的行抛出exception next无论如何都不会执行。然后它会抛出您的流来捕获。这和你想要的不一样吗。如果没有,您可以尝试以下If((try strcmp(listFiles(i).name(1:9),'file_name'),catch false,end)==1)未测试但必须工作。
try false,a=1,catch false,end
此代码属性1到a,因此其中没有任何测试。我想测试条件,而不仅仅是尝试一些东西。所以基本上我想做的是不可能的。谢谢你的理由!如果我的代码完全符合您的要求,那么您的方法低估了
try
的功能。我还建议
catch ME
将错误消息保存在
ME
struct中。我想用一种最简单且(可以说)优雅的方式来尝试设置逻辑条件,所以这并不是我想要的。无论如何,谢谢,我将阅读有关
ME
struct的文章!这项功能深入到
try
中,老实说,我无法想象与
try
本身提供的功能有什么不同。所有这些都很好,老实说@Dan在评论中给出了非常好的评论,这使得这些方法几乎不相关。