1.从键盘输入5名学生的姓名和成绩,按成绩从低到高的顺序在屏幕上输出学生信息,并写入一个文本文件。(例3.20)
students =
cell(5,2);
for
i=1:5
students{i,1} = input('name? ',
's');
students{i,2} =
input('mark?');
end
mark =
cell2mat(students(:,2));
[B, idx] =
sort(mark);
fid =
fopen('student.txt','w');
for
i=1:5
s = sprintf('%s %d\n', students{idx(i),1},
students{idx(i),2});
disp(s);
fprintf(fid, '%s %d\n', students{idx(i),1},
students{idx(i),2});
end
fclose(fid);
2.从作业1生成的文本文件中导入数据,求所有学生的总分并输出。
[names, mark] =
textread('student.txt','%s %d');
sum(mark)
A=importdata('student.txt');
sum(A.data)
fid =
fopen('student.txt');
C =
textscan(fid, '%s%f');
fclose(fid);
sum(C{1,2})
3.某工厂2012年上半年各月总产值(单位:万元)分别为60、88、95、56、23、30,2011年上半年总产值(单位:万元)分别为50、74、81、56、23、40,试绘制如下直方图比较这两年同期的总产值。
Y=[60
50;88 74;95 81;56 56;23 23;30 40];
figure;
bar(Y);
title('两年上半年各月总产值对比');
legend('2012年','2011年');
xlabel('月份');ylabel('产值(单位:万元)');
4.OFF是一种三角网格模型文件,文件格式说明如下:
OFF
numVertices numFaces
x y z
x y z
...
3v1 v2 v3
3v1 v2 v3
...
要求写一段程序读取OFF文件,显示三维图形。
思路:
(1)读入顶点数、三角形数
(2)读入顶点
(3)读入三角形
(4)三角形顶点索引+1
(5)用trimesh显示
方法1:%offread.m
fid =
fopen('m120.off','r');
if
fid<0
error('open faild!');
end
string =
fgetl(fid);
num =
fgetl(fid);
count =
sscanf(num,'%d %d %d');
numVertices = count(1);
numFaces
= count(2);
vlist =
zeros(3,numVertices);
for vnum
= 1:numVertices
vert = fgetl(fid);
vdata = sscanf(vert,'%f %f
%f');
vlist(:,vnum) = vdata;
end
flist =
zeros(3,numFaces);
for fnum
= 1:numFaces
face = fgetl(fid);
fdata = sscanf(face,'%d %d %d
%d');
flist(:,fnum) =
fdata(2:end)+1;
end
trimesh(flist',vlist(1,:)',vlist(2,:)',vlist(3,:)');
方法2:
function
offread(filename)
fid =
fopen(filename, 'r');
title =
textscan(fid, '%s', 1)
number =
textscan(fid, '%d %d %d', 1)
points =
textscan(fid, '%f %f %f', number{1})
faces =
textscan(fid, '%d %d %d %d', number{2})
for i = 1
: number{2}
faces{2}(i, 1) = faces{2}(i,
1) + 1;
faces{3}(i, 1) = faces{3}(i,
1) + 1;
faces{4}(i, 1) = faces{4}(i,
1) + 1;
end
faces =
{faces{2}, faces{3}, faces{4}};
trimesh(cell2mat(faces), points{1}, points{2}, points{3});
end
offread('m120.off')