解题过程参看下面的图。图中的点是原始数据点,线是拟合后的曲线。
下面给出代码:
%以下是Matlab代码:
t=[0 20 40 60 80 100 120 140 160 184];
n=[0 1141 2019 2760 3413 4004 4545 5051 5525 6061];
A=[sum(n^4),sum(n^3);sum(n^3),sum(n^2)];
B=[sum(tn^2);sum(tn)];
x=A\B;
a=x(1)
b=x(2)
t_fit=an^2+bn;
plot(n,t,'r',n,t_fit);
xlabel('n'); ylabel('t');
legend('source data','fitting data')
最后得到结果:
a = 26113e-006
b = 00145
当然你也可以参照一楼的matlab程序,他是直接调用系统的多项式拟合函数。
另外,还可以这样:
AA=[n^2;n]';
BB=t';
xx=AA\BB;
aa=xx(1)
bb=xx(2)
结果也是一样的。这个很简洁,但很有技巧,你看一下AA,BB的构造。
xx=AA\BB可以求解长方阵的逆。
这方面我只有些片段,没有完整的理论。因为我的相识比较异类的,跟我的很多同学不同。我是学开发的,你是应用还是开发?
1对数字要很灵敏。像我很多时候打字是用编码输入的,看到一个汉字我都能看到它背后那个那个代码。
2要算无遗漏。编程步骤多的时候容易搞错细节。比如中英文的句号,小数点,标点符号和平时写文章时的些微不同意义,等等。这么多个指令合起来后有无漏洞,或者整合后有没有更强大的用途。
3要保持“计算机程序”一样的思维。想问题的时候多换位,把自己当成电脑,用电脑的思维(角度)来想。
4看到一些好的软件,就发挥想象和所查资料结合,将它的每个零件都剥析清楚,也就是将它的来龙去脉搞得明明白白。最好还能常常自己设计一点东西,无论实不实用,这是从“懂了”到“会运用了”的关键一步。
5不怕辛苦,不怕错,不惜花钱。将自己不懂的问题无论国家大事、鸡毛蒜皮统统打印下来,见到老师就问,问了就记笔记——当然是计算机方面的问题。
6每学一个知识,事前问学长学姐当年心得,事中问同学有何感受、感想,事后多总结。别人不会但你会的,你就尽心去教别人。可能你以为这个你已经很了解了,但往往在教别人时,别人问了点问题你才发现原来自己这个也不时很懂啊
7常和老师一起谈话,除了问不懂的问题,尽量少开口多听他讲。如果老师不健谈,那你要会引导他谈话。宗旨是多想、多问、多听、少说。
clc
clear
close all
Tb = 1;
Ns = 10;
fs = Ns/Tb; % 采样频率
A = 2;
t0 = (0:1/fs:Tb-1/fs);
%% 正交信号
s0 = Aones(1,10); % 正交信号s0
s1 = [Aones(1,5) -1Aones(1,5)]; % 正交信号s1
% figure
% subplot(211);
% plot(t0,s0)
% subplot(212);
% plot(t0,s1)
%% 编码
N = 50; % 采样点数
code = [1,-1,1,1,-1]; % 5个code
for kc = 1:5
if code(kc)==1
x(Ns(kc-1)+1:kcNs) = s0;
else
x(Ns(kc-1)+1:kcNs) = s1;
end
end
%% 加噪声
% t = 0:1/fs:1/fsN-1/fs;
Nt = 1:N;
index2 = 10:10:50;
index2 = index2+2;
Nt2 = 1:5;
deta = [0,01,10,20];
for kd=1:4
noise = sqrt(deta(kd))randn(1,N); % 噪声
y = x+noise; % 输出信号
% y=x;
%% 相关
for ks = 1:5
z0(ks) = y(Ns(ks-1)+1:ksNs)s0'/10;
z1(ks) = y(Ns(ks-1)+1:ksNs)s1'/10;
end
% z0 = xcorr(y,s0);
% z1 = xcorr(y,s1);
str0 = ['噪声方差:' num2str(kd),'与s0相关结果'];
str1 = ['噪声方差:' num2str(kd),'与s1相关结果'];
figure
subplot(211);
stem(Nt2,z0)
title(str0)
subplot(212);
stem(Nt2,z1)
title(str1)
end
你可以看看这个,你怎么和之前别人提的问题一样啊
n=input('输入学生个数:');
score=zeros(n,3);
aver=zeros(n,1);
levels=zeros(1,5);
lname={'A','B','C','D','E'};
for i=1:n
for j=1:3
score(i,j)=input(sprintf('输入第%d名学生第%d门课成绩',i,j));
end
aver(i) = (score(i,1) + score(i,2) + score(i,3)) / 3;
if aver(i) >= 90
l = 1;
else if aver(i) >= 80
l = 2;
else if aver(i) >= 70
l = 3;
else if aver(i) >= 60
l = 4;
else
l = 5;
end
end
end
end
levels(l) = levels(l) + 1;
disp(strcat('该学生成绩等级为',lname{l}));
end
for i=1:5
fprintf(1,'%4c',lname{i});
end
disp(' ');
for i=1:5
fprintf(1,'%4d',levels(i));
end
disp(' ');
for i=100:999
j=fix(i/100);
k=fix((i-100j)/10);
t=i-100j-10k;
if jjj+kkk+ttt==i
i
end
end
fix是取整函数,这样写可以,但答案不唯一。望采纳!
你用全局变量即可。例如,你在GUI的某个函数中申明一个全局变量global a;
然后,你再在命令窗口写一遍global a;
此时,你运行GUI,如果a有值,在workspace中就会有出现。
以上就是关于matlab程序设计:题目:设已有数学模型t=an^2+bn,数据(n,t)的十个观测值分别为:全部的内容,包括:matlab程序设计:题目:设已有数学模型t=an^2+bn,数据(n,t)的十个观测值分别为:、谈一下你对matlab程序设计与实验的认识、求大神做matlab程序设计等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)