当前位置:编程学习 > Matlab >>

关于使用MATLAB编程序的问题:不知道怎么编,也不知道用什么命令,那位大哥帮忙编个?谢谢

如何在一个直径大概2.5米圆盘上均匀布置13个叶片(水轮机叶片),我的意思是叶片都有重量,如何布置才能让转轮不平衡量最小。(假设叶片的重量kg为,171, 173,174.5,170,175,172,171,173,176,169.5,170.5,172.5,176.5),我想用matlab编写一个程序,输入叶片重量之后,就能产生最佳的安装位置。
答案:clc;clear
theta=linspace(0,2*pi,6000);
x=10*cos(theta);
y=10*sin(theta);
plot(x,y)
axis image
grid on
hold on
theta0=2*pi/13;
for i=1:13
    theta=i*theta0;
    x=10*cos(theta);
    y=10*sin(theta);
    text(x,y,num2str(i),'fontsize',15)
    plot([0;x],[0;y])
end

%理论上应该是把m矩阵做全排列,分别求出矢量和,取出最小的,但是限于内存,这种
%方法不能采用,只能通过数据特征和结构对称性,人为给出几种可能的组合,分别计算
%求出最小的组合,叶片顺序如图中所表示。下面随意给出三种可能的组合,仅用于示例。
m=[171,173,174.5,170,175,172,171,173,176,169.5,170.5,172.5,176.5
    173,171,174.5,170,175,172,171,173,176,169.5,170.5,172.5,176.5
    170,173,174.5,171,175,172,171,173,176,169.5,170.5,172.5,176.5];
[row,col]=size(m);
ax=zeros(col,1);
ay=zeros(col,1);
mm=zeros(row,1);
for j=1:row
    for i=1:col
        theta=i*theta0;
        ax(i)=m(j,i)*cos(theta);%对质量做分解
        ay(i)=m(j,i)*sin(theta);
    end
    mx=sum(ax);%分别求矢量和
    my=sum(ay);
    mm(j)=norm([mx my]);
end
[mm_min,ind]=min(mm);
mm
mm_min%最小不平衡量
m_min=m(ind,:)%对应的组合

上一个:matlab程序求教,这个程序每句话都是什么意思啊?
下一个:MATLAB高手来,帮忙改改程序,关于自适应滤波器算法的

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,