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('利润')
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
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); ‘仿真预测’
我的这个程序没有进行初始化,你还需要先将数据进行初始化后才能算。
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
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
你看看行吗