下面这段是apriori算法中由2频繁项集找k频繁项集的程序,程序中有两个问题:
1、似乎while循环的K永远都是固定的,也就是都是频繁2项集的个数。得到频繁3项集后K的个数不是要变吗?如何体现呢?
2、程序中有两个for的大循环,但是发现结果是只要找到一个频繁3项集第二个for循环就会结束,但是其实还应该有其它的频繁3项集。for循环不是应该无条件执行到参数k结束吗?当时k值是15,可是程序结束的时候i=2,j=3,然后j就不执行4以及一直到k的部分了。是什么原因呢?麻烦高手指点一下。急啊……
while( k>0)
le=length(candidate{1});
num=2;
nl=0;
for i=1:k-1
for j=i+1:k
x1=candidate{i}; %candidate初始值为频繁2项集,这个表示频繁项集的第i项
x2=candidate{j};
c = intersect(x1, x2);
M=0;
r=1;
nn=0;
l1=0;
if (length(c)==le-1) & (sum(c==x1(1:le-1))==le-1)
houxuan=union(x1(1:le),x2(le));
%树剪枝,若一个候选项的某个K-1项子集为非频繁,则剪枝掉
sub_set=subset(houxuan);
%生成该候选项的所有K-1项子集
NN=length(sub_set);
%判断这些K-1项自己是否都为频繁的
while(r & M<NN)
M=M+1;
r=in(sub_set{M},candidate);
end
if M==NN
nl=nl+1;
%候选k项集
cand{nl}=houxuan;
%记录每个候选k项集出现的次数
le=length(cand{1});
for i=1:m
s=cand{nl};
x=X(i,:);
if sum(x(s))==le
nn=nn+1;
end
end
end
end
%从候选集中找频繁项集
if nn>=th
ll=ll+1;
candmid{nl}=cand{nl};
pfxj(nl)element=cand{nl};
pfxj(nl)time=nn;
disp('得到的频繁项集为:')
result=(candmid{nl});
disp(result);
end
end
end
end
《MATLAB R2021a破解版》百度网盘资源免费下载:
yg45
MATLAB R2021a是由美国知名企业MathWorks打造的一款非常专业且强大的商业数学软件,适合应用数学、信息与计算科、通信工程、电气工程、自动化等专业的用户使用,能够轻松创建出直观的数学建模,也可以为你更好的解决计算和仿真问题,是众多数学领域专家不可或缺的工具之一。该软件可以说是一门高级的技术计算语言以及现代数据分析神器,和我们熟悉的Java、C编程语言相比,该软件能够大大简化算法的开发过程,利用其内核还能与上述编程语言进行集成,让用户更快地执行相关设计。此外,matlab2021软件能够用来解决LAPACK、BLAS线性代数的问题,拥有用于多项式、基本统计量、微分方程数值解的函数,内置了丰富的可视化工具,让你在操作方面变得轻松许多。
在simulink中没有专门的电流互感器模型,可以通过用simpowersystem中的elements中的Saturable Transformer这个饱和变压器来模拟,初始是三个变比,你双击模块,可以选择为两个变比的变压器,然后设定变比。只是接线上注意与主变的接法相反。主变Y/D则互感器D/Y。
现在还有种互感器两侧都接为Y/Y型,若主变Y/D则三角形侧不变,而一次侧即Y型侧,对应的互感器电流则采用两项相减。i(ak)=i(a)-i(b);i(bk)=i(b)-i(c);i(ck)=i(c)-i(a);i(a,b,c)表示三相电流采样值。i(ak)表示补充后的电流。
这个方法可参考书“微型机继电保护原理”张举。P176页。这久也是在做毕业设计用到,互感器饱和对变压器的差动保护影响。
就sym('3')与sym(3)而言,二者没有区别:
>> sym('3')==sym(3)ans =
1
但如果不是整数,结果可能不一样:
>> sym('sqrt(2)-1')ans =
sqrt(2)-1
>> sym(sqrt(2)-1)
ans =
74618081806211082^(-54)
前者以字符串的形式传给符号运算内核,可以保留完整的精度;而后者经过浮点数运算之后再转换为符号类型,存在精度损失。
Matlab是科学计算语言,一般用来跑科学计算的实验的,像模式识别、图像处理、机器学习、密码学、计算数学、信号处理等都会大量用到,去公司据我了解没有要求掌握Matlab的,做研究是神器,集成了大量代数运算,不会编程都能很快上手的。
并不是所有的代码都需要追求极致速度。使用 profile 命令来查看代码运行的瓶颈,找出最需要优化的点。
减少不必要的循环。
不过,使用 arrayfun/cellfun/structfun
通常并不会提高代码运行速度,它只是帮你把代码压缩成一行,以及消除一段缩进。你需要真正的矢量化你的代码。在代码矢量化技巧中,除了用类似
bsxfun/cumsum/accumarray 这类「神器」外,其实更多情况下,只依靠点系列运算符(如:)、矩阵乘法、冒号(:)运算符、逻辑索引,以及 Matlab 内建的许多天生支持矢量化操作的函数,如 sin/sum/max/filter 等,就已经足够应付了。
做到 0 warning。许多影响代码运行性能的问题,Matlab 能够提前帮你预见到,并以 warning 的方式提醒你,例如:循环中大小不断增长的矩阵,不必要的 find 调用,或者 disp(sprintf('Hello world!')) 等等……
使用 mex 函数。通常我不推荐使用 mex 函数,因为太多人用它只是因为他们对 C/C++ 更熟悉,用 Matlab 却只会玩玩 plot(而且是连坐标轴标签都不画的那种)。但若真的有需求,mex 就是你最后的希望。详细情况,还是咨询文档吧。
《MATLAB R2021a破解版》百度网盘资源免费下载:
yg45
MATLAB R2021a是由美国知名企业MathWorks打造的一款非常专业且强大的商业数学软件,适合应用数学、信息与计算科、通信工程、电气工程、自动化等专业的用户使用,能够轻松创建出直观的数学建模,也可以为你更好的解决计算和仿真问题,是众多数学领域专家不可或缺的工具之一。该软件可以说是一门高级的技术计算语言以及现代数据分析神器,和我们熟悉的Java、C编程语言相比,该软件能够大大简化算法的开发过程,利用其内核还能与上述编程语言进行集成,让用户更快地执行相关设计。此外,matlab2021软件能够用来解决LAPACK、BLAS线性代数的问题,拥有用于多项式、基本统计量、微分方程数值解的函数,内置了丰富的可视化工具,让你在操作方面变得轻松许多。
学习编程语言,包括你说的API和MFC这些用于做界面的软件,都是为了你以后能更好的从事遥感领域,遥感现在是从研究阶段开始进入实用阶段,这样我们就需要根据成熟的理论,把一些想法变成现实,而遥感领域很多东西都没做出来,或者说做的都不是很成熟,也可以说别人做的一些软件什么的并不能很好的完成你的想法,或者使用上有局限性,这时如果你在做一些大的项目你很可能就需要自己去编程实现,当然也不是你说的用VC编写界面,那麻烦了去了,可以用Qt,API,MFC等等很多在编写界面领域更实用的软件,但是很多甚至绝大部分都已c 为基础,学了c,再学那些可能学的会快一些,C语言仍然是也仍将是全世界最为成功的编程语言之一
欢迎分享,转载请注明来源:表白网
评论列表(0条)