第二章
2.如何读取cell类型和struct类型数据中的值? 答:cell型数据仍类似于矩阵,只不过矩阵中的每个元素可以是不同类型的数据。而struct型数据由多个子域(field)构成一个结构体。
cell型数据的读取通过大括号{}和元素位置来读取,如A{1,1};而struct型数据的读取通过点符.结合域名来读取,如student.score。
4.在本章中没有介绍矩阵计算的相关内容,请在MATLAB的帮助中查找相关的函数,来对矩阵A进行如下的计算。
?17 24 1 8 15??23 5 7 14 16????A? 4 6 13 20 22???10 12 19 21 3????11 18 25 2 9??
求A的逆矩阵A?1、特征根和特征向量、A的行列式、A的秩和A的迹,并判断A的对
角线上元素和是否等于A的迹。
答:求A的逆矩阵A?1:A_inv=inv(A)
求A的特征根和特征向量:[eigV eigR]=eig(A) 注:eigV是特征向量,eigR的对角元素是特征根。
求A的行列式:A_det=det(A)
求A的秩:A_rank=rank(A) 求A的迹:A_trace=trace(A)
A的对角线上元素和:A_diagsum=sum(diag(A)) 注:应等于A的迹
5.利用MATLAB的帮助,完成对矩阵A的下列操作。
?1 1 1 1 1??22 2 2 2??A???33 3 3 3????44 4 4 4?
(1) 将矩阵A转换为10×2的矩阵。 答:B=reshape(A,10,2)
(2) 将矩阵A上下翻转后形成新的矩阵B。 答:B=flipud(A)
生物医学数据分析及其MATLAB应用
(3) 将矩阵A左右翻转。 答:B=fliplr(A)
(4) 提取A的主对角线上的元素。 答:V=diag(A)
(5) 将A的第2行至第3行和第2列至第5列构成的子矩阵赋值为-1。 答:A(2:3,2:5)=-1
(6) 将A的第2行至第3行部分作为元素复制为5×2的矩阵C,C的维数是多少? 答:C=repmat(A(2:3,:),5,2), size(C) C的维数为10×10。
6.请分别绘制xy和sin(xy)的三维图和等高线。 >> x=-5:0.5:5;
>> [xx,yy]=meshgrid(x); >> Z1=xx.*yy; >>Z2=sin(Z1);
>>figure,surfc(xx,yy,Z1),title(‘xy with contour’) ;
>> figure,surfc(xx,yy,Z2), title(‘sin(xy) with contour’) ; >> figure,contour(xx,yy,Z2), title(‘contour of sin(xy)’) ;
xy with contoursin(xy) with contour5contour of sin(xy)41300.520010-0.50-1-10-20-2-305500-5-5-5-4-3-2-1012345-405-10123-3-5-5-5-4-3-2-1012345
7.下面给出一个迭代模型。
2??xk?1?1?yk?1.4xk ?y?0.3x?k?k?1写出求解该模型的M-函数。如果迭代初始值为x0?0,y0?0,计算k=0∶1∶300的迭代过程,分别绘制x的变化曲线和y的变化曲线,并在二维平面上绘制点(x,y)的运行轨迹。
答:%%%assignment2-7
clear; close all; clc; x(1)=0; y(1)=0;
8
第2章 MATLAB应用基础
for k=1:300
x(k+1)=1+y(k)-1.4*x(k)^2; y(k+1)=0.3*x(k); end
figure,plot([1:length(x)],x),title('x with k') figure,plot([1:length(y)],y),title('y with k') figure,plot(x,y,'o-.'),title('trajectory')
x with ky with ktrajectory1.50.40.40.30.310.20.20.50.10.1000-0.1-0.1-0.5-0.2-0.2-1-0.3-0.3-1.5050100150200250300350-0.4050100150200250300350-0.4-1.5-1-0.500.511.5
第三章
1.画出医学上常用的正态分布曲线,并确定其极值点。
(x?μ)2f(x)?12σ22πσe?,其中μ,σ(σ?0)为常数
%%%assign31.m clear; close all; mu=0; sigma=1; x=-5:0.1:5;
y=1./(sqrt(2*pi)*sigma)*exp(-(x-mu).^2/(2*sigma^2));
%%% y=normpdf(x,mu,sigma);%%%也可直接调用正态分布函数计算 figure,plot(x,y)
title('正态分布曲线') j=find(y==max(y));
9
生物医学数据分析及其MATLAB应用
xamx1=x(j)%% x极大值点 ymax=y(j)%%极大值
%%% 方法2
figure,
fplot(@ (x) 1/(sqrt(2*pi)*sigma)*exp(-(x-mu)^2/(2*sigma^2)),[-5,5],'r-') title('正态分布曲线')
[xmax2,ymaxval] = fminbnd(@ (x) (-1)/(sqrt(2*pi)*sigma)*exp(-(x-mu)^2/(2*sigma^2)),-5,5);%%乘以-1变为求极小值 ymax2=-ymaxval;%%极大值
xmax2 ymax2
2.某年级甲班、乙班各有男生50人。从两个班中各抽取10人测量身高,并求其平均身高。如果甲班的平均身高大于乙班,能否推论甲班所有同学的平均身高大于乙班?为什么?
答:不能。从甲、乙两班分别抽取10 人其身高分别是甲、乙两班的一个样本。该平均身高只是甲、乙两班所有同学平均身高的一个点估计值。既使是按随机化原则进行抽样,由于存在抽样误差,样本均数与总体均数一般很难恰好相等。因此,不能仅凭两个样本均数高低就作出两总体均数熟高熟低的判断,而应通过统计分析,进行统计推断,才能作出判断。
3.利用函数randn(1000,1)产生样本,试计算其均值、方差、中值、最大值和最小值。为什么它的均值并不为零呢?
答:>>randn(‘seed’,5); %%为重复检验,种子数选5
>>x=randn(1000,1); %%生成标准正态分布的一个样本,样本容量为1000 >>xmean=mean(x) %%均值 >>xvar=var(x) %%方差 >>xmen=median(x) %%中值 >>xmax=max(x) %%最大值 >>xmin=min(x) %%最小值
由样本计算得到的均值为0.046,这说明由样本得到的统计量只是对总体的一种估计,一般很难恰好相等。
4.假定5岁男童的体重服从正态分布,平均体重m =19.5(kg),标准差s =2.3(kg)。 随机抽查一5岁男童的体重,计算概率如下。
(1) 其体重小于16.1kg;(2) 其体重大于22.9kg;(3) 其体重在14.6kg到23.9kg之间。
10
第2章 MATLAB应用基础
16.1答:(1) P(x?16.1)????1s2?e?(x?m)2s2≈0.0697
对应matlab命令为:>>normcdf(16.1,19.5,2.3)
22.9(2) P(x?22.9)?1?P(x?22.9)?1????1s2?e?(x?m)2s2≈0.0697
对应matlab命令为:>>1-normcdf(22.9,19.5,2.3)
23.9(3)P(14.6?x?23.9)?P(x?23.9)?P(x?14.6)?14.6?1s2?e?(x?m)2s2≈0.9556
对应matlab命令为:>> normcdf(23.9,19.5,2.3)-normcdf(14.6,19.5,2.3)
5.简述可信区间在假设检验问题中的作用。
答:可信区间可以回答差别是否有统计学意义。可信区间需在预先规定的概率即检验水准a的前提下进行计算。
6.利用MATLAB,产生符合下列分布的数据样本X,样本大小为(1000,1)。 (1) X~N(10,5);
(2) X~R(1,5)(均匀分布); (3) X~E(3)(指数分布)。
答:(1) >>x=normrnd(10,sqrt(5),1000,1);
(2) >>x=unifrnd(1,5,1000,1); (3) >>x=exprnd(3,1000,1);
7.有10例健康人和10例克山病人的血磷测定值(mg%)见表3-11,问克山病人的血磷是否高于健康人?
表3-11 健康人与克山病人的血磷测定值(mg%)
健 康 人 患 者 170 150 155 125 140 150 115 140 235 90 125 120 130 100 145 100 105 90 145 125 答:此题为两组独立样本的t检验,参见例3.17,需首先判断是否符合应用条件,最终假设检验结果为不能拒绝H0,即不能认为两类人的均值有显著差异,因此不能说明克山病人的血磷高于健康人。
8.某单位研究代乳粉营养价值时,用大白鼠作实验,得到大白鼠进食量和增加体重的数据见表3-12。
11