Отчет по лабораторной работе № 3 «Компьютерное моделирование»

advertisement
Отчет по лабораторной работе № 3
по дисциплине: «Компьютерное моделирование»
на тему: «Работа со строками и текстовыми файлами
в MatLab»
Вариант 1.
Выполнил: Батищев Д.С.
Проверила: Голощапова В.А.
Урсол Д.В.
Белгород 2012
Исходная строка:
s =
Alekseev Sergey 1980 5 4 4 5 3 5
0.1 0.2 0.3 9.91
1.9 0.4 0.1 8.01
4.7 5.1 3.9 7.16
Задание 1.
Определить количество символов в первой строке варианта без учета
пробелов.
s = char('Alekseev Sergey 1980 5 4 4 5 3 5' , '0.1 0.2 0.3 9.91' ,
'1.9 0.4 0.1 8.01' , '4.7 5.1 3.9 7.16')
length( strrep(s (1, : ), ' ', '') )
Листинг 1. Решение задачи 1.
Задание 2.
Первая строка является предложением, в котором слова разделены
пробелами. Переставить первое и последнее слово.
s =
Alekseev Sergey 1980 5 4 4 5 3 5
0.1 0.2 0.3 9.91
1.9 0.4 0.1 8.01
4.7 5.1 3.9 7.16
>> sp = findstr( s(1, :), ' ' )
sp =
9
16
21
23
25
27
29
31
>> ns = [ s(1, (end - (end - sp(1, end))) : end) , s(1, sp(1, 1) :
sp(end)) s(1, 1 : (sp(1, 1) - 1) ) ]
ns =
5 Sergey 1980 5 4 4 5 3 Alekseev
Листинг 2. Решение задания 2.
Задание 3.
Заменить в первой строке цифры числительными (вместо 1, 2,… — один, два,
три, …).
function res = task3(s)
res = '';
sp = strfind( s(1, :), ' ' );
sp = [ 1 sp sp(end) + ( length(s(1, sp(end) : end - 1 )) ) ];
for i = 2 : 1 : length(sp)
word = '';
tmp = strrep( s(1, sp(i - 1) : sp(i) ) , ' ', '' );
switch(tmp)
case{ '0' }
word = 'zero';
case{ '1' }
word = 'one';
case{ '2' }
word = 'two';
case{ '3' }
word = 'three';
case{ '4' }
word = 'four';
case{ '5' }
word = 'five';
case{ '6' }
word = 'six';
case{ '7' }
word = 'seven';
case{ '8' }
word = 'eight';
case{ '9' }
word = 'nine';
otherwise
word = tmp;
end;
res = [res word ' '];
end;
end
Листинг 3. Решение задачи 3. Файл task3.m
Рис. 1. Решение задачи 3.
Задача 4.
Задана строка (первая строка варианта), содержащая текст и числа,
разделенные пробелами, выделить числа в числовой массив.
function res = task4(s)
res = [];
sp = strfind( s(1, :), ' ' );
sp = [ 1 sp sp(end) + ( length(s(1, sp(end) : end - 1 )) ) ];
for i = 2 : 1 : length(sp)
tmp = str2double(strrep( s(1, sp(i - 1) : sp(i) ) , ' ', '' ));
if( (tmp / 1) == tmp )
(tmp / 1)
res(1, length(res) + 1) = tmp;
end;
end;
end
Листинг 4. Решение задачи 4. Файл task4.m
Рис. 2. Решение задачи 4.
Задача 5.
Записать данные, указанные в соответствующем варианте, в файл inN.txt, где
N – номер варианта.
function res = task5(s, n)
file = [ 'in' num2str(n) '.txt' ];
ss = size(s);
f = fopen(file, 'wt');
for i = 1 : 1 : ss(1, 1)
fprintf(f, [ s(i, : ) '\n']);
end;
fclose(f);
end
Задача 6.
Считать матрицы и вектора из файла в подходящие по размеру массивы.
Обратите внимание, что в файлах содержится рядом две или три матрицы
или вектора, их следует занести в разные массивы.
function res = task6(filename)
res = '';
f = fopen(filename, 'r');
t = 0;
tvlc = 0; tvlp = 0;
v = []; m = [];
n = 0;
while( feof(f) == 0 )
ts = deblank(fgetl(f));
ts_sc = strfind(ts, ' ');
ts_sc = [ 1 (ts_sc) ( ts_sc(1, end) + (length(ts(1, ts_sc(1, end) : end)) 1) ) ];
tv = [];
for i = 2 : 1 : length(ts_sc)
t = str2double(strrep( ts(1, ts_sc(i - 1) : ts_sc(i) ) , ' ', '' ));
if( (t / 1) == t )
tv(1, length(tv) + 1) = t;
end;
end
n = n + 1;
tvs = length(tv);
eval( [ 'tv_' num2str(n) '=[' num2str(tv) '];' ] );
end;
for i = 1 : 1 : n
s = size(m);
eval( [ 'l=length(tv_' num2str(i) ');' ] );
if(l == 7)
eval( [ 'v=tv_' num2str(i) ';' ] );
else
eval( [ 'm( s(1, 1) + 1 , : ) = tv_' num2str(i) ';' ] );
end;
end;
v
m
fclose(f);
end
Листинг 6. Решение задачи 6. Файл task6.m
Рис. 3. Решение задачи 6.
Задача 7.
Построить график функции y  sin( Nx) , где N – номер варианта, x  [1: 0.1: 5] .
Представить
результаты
вычислений
и
график
в
виде
html-файла
«lab3_N.html», график сохранить в файле с именем «varN», где N – номер
варианта.
function res = task7(n)
res = '';
x = [ 1 : 0.1 : 5 ];
y = sin( n .* x );
htmlf = ['lab3_' num2str(n) '.html'];
figf = ['lab3_' num2str(n) 'fig.jpg'];
f = fopen( htmlf , 'w+' );
html = '<html>\n\t<head>\n\t\t<title>lab3</title>\n\t\t<meta HTTP-EQUIV="ContentType" CONTENT="text/html; charset=utf-8">\n\t<head>\n\n\t<body>';
html = [html '<center><H3>?????<br>?? ???????????? ?????? ' num2str(n)
'</h3></center>\n' ];
html = [html '<p><h3>???????? ??????</h3>\n' ];
html = [html '<br> <b>x</b> = [ %-5.0f ]\n', num2str(x) ];
html = [html '<br> <b>y</b> = [ %-5.0f ]</p>\n', num2str(y) ];
fig = figure('Name','?????? y = sin(Nx)');
hold on;
plot( x, y );
hold off;
saveas( fig, figf )
html = [html '<p><b>??????</b><br><a href=' figf '><img scr=' figf ' height=50%
width=50%></img></a>' ];
html = [html '</body></html>' ];
fprintf( f, html );
fclose(f);
Download