matlab的灰色模型预测怎么编程

2024-05-14

1. matlab的灰色模型预测怎么编程

自己编的,希望对你有帮助

clear
x0=[89677,99215,109655,120333,135823,159878,182321,209407,246619,300670];
pre_num=10;

n=length(x0);
disp('级比检验')
lambda=x0(1:end-1)./x0(2:end);
range=minmax(lambda)
x1=cumsum(x0);

z=0.5*(x1(2:end)+x1(1:end-1));
Y=x0(2:end)';
B=[-z(1:end)' ones(n-1,1)];
u=B\Y; 閯(B'*B)*B'*Y
a=u(1)
b=u(2)
x0_pre=[x0(1) ones(1,n+pre_num-1)];
for k=1:n-1+pre_num
    x0_pre(k+1)=(x0(1)-b/a)*(exp(-a*k)-exp(-a*(k-1)));
end

err=[x0 - x0_pre(1:n)];
epsilon=abs(err)./x0(1:n).*100

disp('预测值')
disp(x0_pre)
disp('相对误差')
disp(epsilon)

t1=1999:2008;
t2=1999:2018;
plot(t1,x0,'d',t2,x0_pre,'LineWidth',2)  %原始数据与预测数据的比较
xlabel('年份')
ylabel('利润')

matlab的灰色模型预测怎么编程

2. 如何用matlab编程实现A/D以及D/A转换

clc;
close all;
clear all;

a=4;
f0=0.02;
L=50;
n=1:(L-1);
x=a.*cos(2.*pi.*f0.*n);
bit=5;
range=2^5;

plot(x);

interval=(a*2)/(range-1);
partition = [-a:interval:a];
interval2 = (a*2)/(range)
codebook=[-a:interval2:a];


[index quantized]= quantiz(x,partition,codebook); 
plot(n,x,'x',n,quantized,'.');
legend('Original signal','Quantized signal');

%index为输出5bit输出数字信号
%下面从index到output

output=(index-16)/4;
figure;
plot(n,x,n,output);
legend('Original signal','Output signal');

3. 如何在matlab编程中实现arcsin

>> sin(pi/6)

ans =

    0.5000

>> asin(0.5)

ans =

    0.5236

>> pi/6

ans =

    0.5236

如何在matlab编程中实现arcsin

4. 数学建模:预测学生成绩的一种方法,需要用matlab编程,请教高手

%程序中的变量定义:alpha是包含α、μ值的矩阵;ago是预测后累加值矩阵;var是预测值矩阵;error是残差矩阵; c是后验差比值
 function gm(x);          %定义函数gm(x)
 clc;                     %清屏,以使计算结果独立显示
 format long;             %设置计算精度
 if length(x(:,1))==1     %对输入矩阵进行判断,如不是一维列矩阵,进行转置变换
     x=x';
 end;
 n=length(x);             %取输入数据的样本量
 z=0;
 for i=1:n                %计算累加值,并将值赋与矩阵be
     z=z+x(i,:);
     be(i,:)=z;
 end
 for i=2:n                %对原始数列平行移位
     y(i-1,:)=x(i,:);
 end
 for i=1:n-1              %计算数据矩阵B的第一列数据
     c(i,:)=-0.5*(be(i,:)+be(i+1,:));
 end
 for j=1:n-1              %计算数据矩阵B的第二列数据
     e(j,:)=1;
 end
 for i=1:n-1              %构造数据矩阵B
     B(i,1)=c(i,:);
     B(i,2)=e(i,:);
 end
 alpha=inv(B.'*B)*B.'*y;  %计算参数α、μ矩阵
 for i=1:n+3              %计算数据估计值的累加数列,如改n+1为n+m可预测后m-1个值
     ago(i,:)=(x(1,:)-alpha(2,:)/alpha(1,:))*exp(-alpha(1,:)*(i-1))+alpha(2,:)/alpha(1,:);
 end
 var(1,:)=ago(1,:)
  for i=1:n+2  %如改n为n+m-1,可预测后m-1个值
      var(i+1,:)=ago(i+1,:)-ago(i,:);    %估计值的累加数列的还原,并计算出下一预测值
              end
          for i=1:n
       error(i,:)=var(i,:)-x(i,:);     %计算残差
   end
     c=std(error)/std(x);      %调用统计工具箱的标准差函数计算后验差的比值c
     ago             %显示输出预测值的累加数列
     alpha           %显示输出参数α、μ数列
     var             %显示输出预测值
     error           %显示输出误差
     c               %显示后验差的比值c
x=[19519,19578,19637,19695,16602,25723,30379,34473,38485,40514,42400,48337];gm(x)
你将向量中的数据改成 你的数据就可以了

5. bp神经网络股票价格预测的MATLAB编程

P=[];‘输入,开盘价,最高价,最低价,收盘价成交量依次5天的数据’
T=[];’输出,即第二日的收盘’
net=newff(minmax(P),[7,1],{'tansig','logsig'},'traingdx'); 
net.trainParam.epochs=1000; ‘最大训练次数,根据需要可自行调节’
net.trainParam.goal=0.01; ‘误差’
net.trainParam.lr=0.01; ‘学习率’
net=train(net,P,T); ‘训练网络’
test=[];‘待预测数据输入’
out=sim(net,test); ‘仿真预测’
我的这个程序没有进行初始化,你还需要先将数据进行初始化后才能算。

bp神经网络股票价格预测的MATLAB编程

6. 应用MATLAB编程实现数字水印

最后一句 subplot(2,2,3);imshow(D,[]);title('嵌入水印的图像'); 
改成 subplot(2,2,4)...晕,你真马虎

另外我复制到我的matlab里面运行的时候发现必须输入灰度图像才能通过prewitt边缘检测,建议在前面加上灰度化
clear;clc;close all

size=256;block=8;blockno=size/block;LENGTH=size*size/64;
Alpha1=0.02;  Alpha2=0.1; T1=3; I=zeros(size,size); D=zeros(size,size); BW=zeros(size,size); block_dct1=zeros(block,block);
%产生高斯水印,并显示水印信息;
randn('seed',10);mark=randn(1,LENGTH);
subplot(2,2,1);plot(mark);title('水印:Gaussian noise');  

%显示原图
subplot(2,2,2);I=imread('1.jpg'); 
I=rgb2gray(I);
imshow(I);title('原始图像:I');
%显示prewitt为算子的边缘图

BW=edge(I,'prewitt');subplot(2,2,3);imshow(BW);
title('edge of origine image');
%嵌入水印
k=1;
for m=1:blockno
   for n=1:blockno
      x=(m-1)*block+1;      y=(n-1)*block+1;
        block_dct1=I(x:x+block-1,y:y+block-1);
        block_dct1=dct2(block_dct1);
    BW_8_8=BW(x:x+block-1,y:y+block-1);
      if m<=1|n<=1
         T=0;
      else
         T=sum(BW_8_8);    T=sum(T);
      end
      if T>T1
         Alpha=Alpha2

else
         Alpha=Alpha1;
end
block_dct1(1,1)=block_dct1(1,1)*(1+Alpha*mark(k));     block_dct1=idct2(block_dct1);
D(x:x+block-1,y:y+block-1)=block_dct1;  
      k=k+1;
   end
end
%显示嵌入水印后的图像
subplot(2,2,4);imshow(D,[]);title('嵌入水印的图像');

7. 求助啊~~用matlab编写程序实现~~~很急的~~~

偶数之和当然是偶数了,不用判断了呵呵。

function y=sumeven(m)
if(mod(m,2)==0)
    y=m/2*(m/2+1)
else
    y=sumeven(m-1)
end
end

求助啊~~用matlab编写程序实现~~~很急的~~~

8. 用matlab编写程序实现如下条件:

function a=G_C(n)
if n<=4||rem(n,2)~=0
    error('Input number error!');
    return;
end

 
for i = 1:n
    for j = i:n
        if (isprime(i))&(isprime(j))&(i+j==n);
            a(1)=i; 
            a(2)=j;
            break
        end
    end
end
 
 
>> G_C(24)
ans =
    11    13
 
>> G_C(30)
ans =
    13    17
你看看行吗