【发布时间】:2014-04-03 23:30:48
【问题描述】:
我有这个问题,我想在 matlab 中解决。所以,有一个假想的工厂生产缝合线,只有在盒子上的封条符合某些参数的情况下才会发货: 1.密封必须在150-170摄氏度之间 2. 密封压力必须在 60-70 psi 之间 3. 停留时间必须在 2.0 到 2.5 秒之间(如果你不知道这意味着什么,请不要担心)
所以练习提供了一个包含 5 列和 34 行数据的矩阵。每一行对应一个不同的缝合密封,每一列都有关于该密封的数据。唯一重要的列是第 3 4 和 5 列,因为它们对应于温度 (3) 压力 (4) 和停留时间 (5)。如果有关印章的数据不符合上述参数,则第 1 列包含框号,第 2 列包含被拒绝的星期几(1、2、3、4 或 5)。 (这个矩阵在名为 suture.mat 的文件中 [稍后将相关])。
这是我想要做的:显示 (1-6) 的值,然后移动到 7 和 8
1) 因温度而被拒收的箱子百分比, 2) 因压力而拒收的百分比,以及 3) 由于停留时间而拒绝的百分比。 注意:如果一个特定的盒子因为一个以上的原因被拒绝,它应该被计入所有 适用的总数。 4)被拒绝的盒子总数(记住一个被拒绝的盒子应该只出现 总共出现一次,但可能出现在多个拒绝类别中。) 5) 5 天内每天创建的盒子总数 6) 五天中每一天的每个拒绝类别的箱子数
7) 创建一个二维条形图,显示五天中每一天的被拒绝盒子的总数 8) 创建一个 3-D 条形图,显示五天中每一天的每个类别中的总框数
到目前为止,我只能使用一些带有基本 if 语句的 for 循环正确显示 1-4 的值。我不能做剩下的事情,我需要一些指导或实际代码来完成 5-8。感谢您的宝贵时间。
P.S- 这是我所拥有的产生 1-4 的值(不确定是否正确)。
clc 清除
load suture.mat;
Temps = suture(1:end,3);
sumT=0;
TBad= Temps(1:end)<150|Temps(1:end)>170 ; %function that sets parameters for which batch gets rejected based on temperature
for iT= 1:1:length(TBad)
if(TBad(iT)==1)
sumT=sumT+1;
end
end
disp('The percent batches rejected due to temperature')
PercentRejT=(sumT/iT)*100
Pres=suture(1:end,4);
sumP=0;
PBad= Pres(1:end)<60|Pres(1:end)>70 ;%function that sets parameters for which batch gets rejected based on pressure
for iP= 1:1:length(PBad)
if(PBad(iP)== 1)
sumP=sumP+1;
end
end
disp('The percent batches rejected due to pressure')
PercentRejP=(sumP/iP)*100
DwelT=suture(1:end,5);
sumDt=0;
DtBad= DwelT(1:end)<2|DwelT(1:end)>2.5 ;%function that sets parameters for which batch gets rejected based on Dwell time
for iDt= 1:1:length(DtBad)
if(DtBad(iDt)== 1)
sumDt=sumDt+1;
end
end
disp('The percent batches rejected due to dwell time')
PercentRejDt=(sumDt/iDt)*100
sutsBad= PBad((1:end))== 1|TBad((1:end))==1|DtBad((1:end))==1;
sumTot=0;
for iTot= 1:1:length(sutsBad)
if((sutsBad(iTot))== 1)
sumTot=sumTot+1;
end
end
disp('The total amount of batches rejected:')
disp(sumTot)
【问题讨论】:
标签: matlab if-statement for-loop matrix while-loop