matlab读取off文件,matlab绘图/列表/直方图/读取off文件

这段内容展示了MATLAB在数据处理和图形绘制的应用。包括从键盘输入学生信息并按成绩排序,将数据写入文本文件,从文件读取数据并计算总分,以及绘制两年总产值对比直方图。此外,还提供了读取OFF文件并显示三维图形的MATLAB代码,涉及文件读取和图形渲染。
摘要由CSDN通过智能技术生成

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,试绘制如下直方图比较这两年同期的总产值。

a4c26d1e5885305701be709a3d33442f.png

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

blog_63a544f2010164e5.htmlx 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')

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值