问题陈述:提供执行以下操作的函数:c1)两个向量D1和D2各自具有7个元素,然后形成每个向量的对应分量之间的除法,并将结果分配给向量名称D3,放置避免被零除的语句(即,如果分母的元素为空则不除);
该问题的思想是每当向量D2的元素之一等于0时设置错误消息。
我的尝试:
D1 = [d1 d2 d3 d4 d5 d6 d7]
D2= [d21 d22 d23 d24 d25 d26 d27]
for i= 1:length(D1)
if 0 in D2
fprintf(‘error: division by 0/n’)
else
D3=D1./D2
end
我不知道Matlab中是否存在"if-in"结构,如果不存在,那么等价的是什么呢?
提前感谢!!!
1条答案
按热度按时间tag5nh1u1#
避免被零除的一种方法是修改
D2
,将任何0
替换为nan
。除以nan
会产生nan
,因此只需检查结果向量D3
,就很容易判断哪种除法会导致问题。此外,几乎所有Matlab
的函数都能够很好地处理nan
(即,没有崩溃),或者可以通过设置某个选项来指示它们这样做。我刚才描述的内容可以通过使用逻辑索引来完成,如下所示:
有关逻辑索引的更多详细信息,请参阅相关章节here。
当OP请求一个函数来完成这项工作时,下面是一个可能的实现:
非数值数组或大小不匹配时的错误处理可能会根据项目需求而有所不同。例如,我可以使用
error
(而不是disp
)来显示消息并终止程序。