Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Темы2456_Matlab

.pdf
Скачиваний:
8
Добавлен:
26.03.2021
Размер:
213.61 Кб
Скачать

Тема 2

Контрольное задание

Запишите в текстовый файл и выполните последовательность команд, реализующих следующие действия:

создать вектор-строку X с элементами-годами с 1930 по текущий год,

убрать из вектора элементы для военных лет (с 1939 по 1945),

сгенерировать квадратную матрицу Y, у которой на диагонали находятся те же элементы, что и в Х, а недиагональные элементы равны 1,

сгенерировать вектор-столбец Z, с той же размерностью, что и X, с элементами, равномерно размещенными на интервале от 100 до 500,

получить вектор W, равный произведению Y на Z,

представить матрицу Y в виде вектора и убрать из него элементы с 20 по 30,

определить число элементов в получившемся векторе.

X=1930:2020

X(10:16)=[]

Y=ones(length(X)) Y=triu(Y,1)+tril(Y,-1)+diag(X) Z=linspace(100,500,84)' W=Y*Z

Y=Y(:)

Y(20:30)=[]

length(Y)

Пример ИКЗ

1.Создать матрицу А с 17 строками и 17 столбцами, в которой на главной диагонали находились бы случайные числа из интервала [-5; 15], а все недиагональные элементы

= -0.07.

2.Создать вектор-столбец В с элементами, совпадающими с главной диагональю А.

3.Удалить из А столбцы 5, 7, 13.

4.Подсчитать общее число элементов в А.

5.Помножить А на В и результат записать в С.

6.Преобразовать матрицу А в матрицу Е с 34 строками.

X=(15-(-5))*rand(1,17)+(-5) A=diag(X+0.07)-0.07 B=diag(A)

A(:,[5,7,13])=[]

numel(A)

C=A'*B

E=reshape(A,34,[])

1

Тема 4

Контрольное задание

С помощью текстового редактора среды создайте файлы Z1.txt и Z2.txt, в которые запишите две матрицы с размерностями 3х4 и 2х5. Подготовьте m-файл с некоторым выбранным именем и запишите в него программу, выполняющую с использованием управляющих конструкций следующие операции:

Ввод из файла Z1.txt матрицы Z1.

Замена в матрице Z1 отрицательных значений на значение 0.

Ввод из файла Z2.txt матрицы Z2.

Замена в матрице Z2 значений, меньших 10 на значение 10.

Если матрицы были изменены, записать их в те же файлы.

Генерация вектора-столбца X с числом элементов, равным числу строк в матрице Z1, и со значениями, равномерно размещенными на интервале от 10 до 70,

Поэлементное перемножение матрицы Z1 на Z2 (если такая операция возможна), полученное произведение умножить на вектор X; отобразить результат на экране. При невозможности указанной операции выдать на экран соответствующее сообщение.

Файл dano.m:

Z1=[1,1,1,1;2,2,2,2;3,3,3,3] dlmwrite('Z1.txt',Z1) Z2=[4,4,4,4,4;5,5,5,5,5] dlmwrite('Z2.txt',Z2)

Файл tema41.m:

Z1=dlmread('Z1.txt') [m1,n1]=size(Z1) ind1=0

for k=1:m1 for g=1:n1

if Z1(k,g)<0 Z1(k,g)=0 ind1=1

end

end

end Z2=dlmread('Z2.txt') [m2,n2]=size(Z2) ind2=0

for k=1:m2 for g=1:n2

if Z2(k,g)<10 Z2(k,g)=10 ind2=1

end

end

end

if ind1==1 dlmwrite('Z1.txt',Z1)

end

if ind2==1 dlmwrite('Z2.txt',Z2)

end X=linspace(10,70,size(Z1,1))' if size(Z1)==size(Z2)

W=Z1.*Z2

W=W'*X

2

disp(W) else

disp('Операция умножения невозможна')

end

Файл tema42.m:

Z1=dlmread('Z1.txt') [m1,n1]=size(Z1) Z11=Z1

Z1(Z1<0)=0 Z2=dlmread('Z2.txt') [m2,n2]=size(Z2) Z22=Z2

Z2(Z2<10)=10 if Z1~=Z11

dlmwrite('Z1.txt',Z1) end

if Z2~=Z22 dlmwrite('Z2.txt',Z2) end

X=linspace(10,70,size(Z1,1))' if size(Z1)==size(Z2)

W=Z1.*Z2

W=W'*X

disp(W) else

disp('Операция умножения невозможна')

end

Пример ИКЗ

Разработать программу, выполняющую следующие операции:

1)Ввести из бинарного файла FFF.МАТ две матрицы: А с 5 столбцами и 6 строками, В с 6 столбцами и 10 строками (Для отладки этот файл подготовить самостоятельно).

2)Поэлементно перемножить матрицу А с аналогичной подматрицей в В и результат записать в С.

3)Вывести матрицу С на экран с заголовком «Матрица С:».

4)Запросить у пользователя и ввести вектор с 5 пороговыми значениями d.

5)Сформировать матрицу М, совпадающую по размерам с С, в которую из С переписываются элементы, превышающие пороговые значения для своих столбцов, а остальные заменяются нулями.

6)Вывести матрицу М на экран построчно с общим заголовком «Матрица М» и заголовком каждой строки по образцу «Х->», где Х – номер строки.

Файл otladka.m:

A=ones(6,5)*diag(1:5)

B=ones(10,6)*diag(1:6) save FFF A B

Файл tema5.m: load FFF

C=A.*B(1:size(A,1),1:size(A,2)) disp('Матрица C: '); disp(C)

d=input('Введите вектор d из 5 пороговых значений: ') M=C

for m=1:size(C,1) for n=1:size(C,2) if M(m,n)<=d(n)

M(m,n)=0

3

end end end

disp('Матрица M') for X=1:size(M,1)

fprintf('%d -> %s \n',X,mat2str(M(X,:))) end

Тема 5

Пример ИКЗ

Разработайте программу, выполняющую следующие операции:

1)Запрос у пользователя параметра А – уровень шумовой компоненты.

2)Создание вектор X с 40 элементами, равномерно размещенными в диапазоне

значений от -3 до 15. Для этих элементов рассчитать векторY – со значениями функции y=2.5+1.6*x-0.7*x2+e, где e – нормально распределенная случайная величина с нулевым математическим ожиданием и стандартным отклонением, равным А.

3)Используя Х иY, построение графика зависимости y(x).

4)Вставка заголовка, обозначения осей.

5)Сохранение графика в файле с некоторым именем в формате JPG.

A=input('Введите значение уровня шумовой компоненты A: ') X=linspace(-3,15,40) Y=2.5+1.6*X-0.7*X.^2+normrnd(0,A,1,length(X))

plot(X,Y) title('Зависимость y(x)') xlabel('Значение x') ylabel('Значение y')

saveas(gcf,'grafik.jpg','jpg')

Тема 6

Контрольное задание

1.Разработайте функцию, которая по заданной матрице Х (входной параметр 1) рассчитывает матрицу V с числами элементов (выходной параметр 1), попадающих в заданное число M одинаковых интервалов разбиения диапазона изменения ее столбцов (входной параметр 2). Также должен быть рассчитан вектор VS с целыми числами, равными построчным суммам элементов матрицы V (выходной параметр 2).

2.Разработайте еще одну функцию, которая по заданным входным параметрам: число строк (m), столбцов (n), математическое ожидание (XS) и стандартное отклонение (SKO), создает матрицу X со случайными, нормально распределенными элементами. Затем по известной из статистики формуле M=1+3.2*lg(m), вычисляет число интервалов разбиения и обращается к функции из п.1 с матрицей Х и M. По возвращенному из функции вектору VS рассчитывает наибольшее (VSmax) и наименьшее (VSmin) значения его элементов. Строит столбиковую диаграмму по матрице V, возвращенной из функции. Возвращаемыми элементами функции должны быть вектор VS и рассчитанные значения VSmax, VSmin.

3.Разработайте сценарий, в котором у пользователя запрашиваются размерности матрицы: m, n, математическое ожидание и стандартное отклонение: XS, SKO, вызывается функция из п.2, отображаются с заголовками рассчитанные в ней значения VSmax, VSmin и строится столбиковая диаграмма по вектору VS.

4

Файл xad1.m:

function [V,VS]=zadanie(X,M) st=length(X(1,:)) V=zeros(M,st)

x1=min(X)

x2=max(X) dx=(x2-x1)./M intervals=x1 for i=1:M

intervals=[intervals;x1+i*dx]

end i=1 j=1 k=1

while i<length(intervals(1,:))*length(intervals(:,1)) V(j,k)=length(find((X(:,k)>=intervals(i) & X(:,k)<intervals(i+1)))) i=i+1

j=j+1 if(j>M)

k=k+1

j=1

i=i+1

end

end

V(size(V,1),:)= V(size(V,1),:)+1 VS=sum(V')

Файл xad2.m:

function [VS,VSmax,VSmin]=xad2(m,n,XS,SKO) X=normrnd(XS,SKO,m,n) M=ceil(1+3.2*log10(m))

[V,VS]=xad1(X,M)

VSmax=max(VS)

VSmin=min(VS)

bar(V)

Файл xad3.m:

m=input('Введите число строк матрицы: ') n=input('Введите число столбцов матрицы: ') XS=input('Введите математическое ожидание: ') SKO=input('Введите стандартное отконение: ') [VS,VSmax,VSmin]=xad2(m,n,XS,SKO) disp('Максимальное значение VS: ') disp(VSmax)

disp('Минимальное значение VS: ') disp(VSmin)

figure bar(VS)

title('Столбиковая диаграмма VS') xlabel('Номер столбца') ylabel('Значение элемента вектора')

Пример ИКЗ

1. Разработайте функцию, реализующую расчет выходного сигнала y инерционного звена по формуле:

y(t)= (x(t)+T*y(t-1))/(T+1),

где Т – заданный параметр – постоянная времени инерционного звена, x(t) – текущее значение входного сигнала, y(t-1) – значение выходного сигнала в предыдущий момент времени (входные параметры функции). Выходной параметр – y(t) – значение выходного сигнала звена в момент времени t.

5

2. Разработайте сценарий, в котором у пользователя запрашиваются значения параметров: параметр Т, число отсчетов сигналов. Затем создается входной сигнал с заданным числом отсчетов, у которого два первых значения равны 0, а остальные равны 1. С помощью функции из п.1 для каждого значения входного сигнала определяется значение выходного сигнала. Затем оба сигнала должны быть представлены на одном графике.

Файл ikz6.m: clearvars

T=input('Введите постоянную времени: ') n=input('Введите число отсчетов: ') x=[0,0,ones(1,(n-2)]

y(1)=0

i=2 while i<n

y(i+1)=otchet(T,x(i),y(i-1)) i=i+1

end

plot(1:n,[x' y']) title('x(t), y(t)') xlabel('t, кол. отсчетов')

ylabel('Значение импульса x, y')

Файл otchet.m:

function Y=otchet(T,x,y) Y=x+T*y/(T+1)

6

Соседние файлы в предмете Информационные технологии