matlab不能盗版吗,matlab为了防止盗版,会不会篡改程序运行结果?这是明证
小弟不才,做了一个简单程序,如下:
x=[3.5 3.6 4.0 2.8 2.7 2.8 2.9 2.8 3.1 2.8 ....
3.0 4.3 3.1 2.3 3.0 2.7 2.5 3.8 2.7 4.1];
d=0.44;m=10;xx=sort(x,'descend'); %将数据由大到小排序
n=length(xx);
kk=[1:n];
p=100*(kk-d)./(n+1-2*d); %计算经验频率
e=mean(xx); %均值
f=sqrt(sum((x./e-1).^2)/(n-1)); %Cv
X1=[1 2 4 10 20 50]; % 作业要求的重现期频率
X2=[0.01:0.01:99.99]; % 画图的横坐标间隔
for j=2:0.5:m
g=j*f; %Cs
if g>=2
disp('Cs不能大于2');
break;
end
h=4/(g^2); %afa
a=e*(1-2*f/g); %a0
b=(e*f*g)/2; %bta
XX1=norminv(X1./100,0,1);
XX1=XX1-XX1(1);
pp=gaminv(X1./100,h,b)+a; % 设计波高
XX2=norminv(p./100,0,1);
XX2=XX2-XX2(1);
pp2=gaminv(p./100,h,b)+a; %原数据对应的累计率波高
figure;
X=[0.01 0.05 0.1 0.5 1 5 10 15 20 30 40 50 60 70 80 85 90 95 99 99.9 99.95 99.99]; %横坐标的值
Y=norminv(X/100,0,1);
Y=Y-Y(1);
for i=1:size(Y,2)
line([Y(i),Y(i)],[0 8]);
end
for i=0:0.5:8 % 10为纵坐标的格数,可以自已设置。
line([0 Y(end)],[i i]);
end
h=findobj('type','axes');set(h,'xtick',[],'ytick',[2:.5:8],'xlim',[0 Y(end)],'ylim',[0 ,8]);
XX=[0.01 1 2 10 40 50 70 90 ];%标横坐标的值,可以自己设置
YY=norminv(XX/100,0,1);YY=YY-YY(1);
for i=1:size(XX,2)
text('string',num2str(XX(i)),'HorizontalAlignment','center','pos',[YY(i),-0.5]);
end
xlabel('Probability');
ylabel('Date');
title('P-III Probability Plot');
hold on;
plot(XX2,pp2,'r*');
legend('data');
hold on;
XX3=norminv(X2./100,0,1);
XX3=XX3-XX3(1);
pp1=gaminv(X2./100,h,b)+a;
plot(XX3,pp1,':c');
legend('理论曲线');
hold on;
plot(XX1,pp,'bo');
legend('设计波高');
k=(j-2)/0.5+1;
RMSE(k)=sqrt(sum(pp2-xx).^2/n;
end
运行显示结果,函数已经超过了坐标范围。但实际上结果就在坐标范围内。原因错在h这个变量的计算上,一次循环只有一个h,但运行的时候有三个或者五个(已经在几个电脑运行过,不同电脑,结果不同),而且matlab给出的值与理论值差的太远。请问这算不算matlab的保护正版措施,还是我的程序有错?