Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ_ЛР_СисАнВыч_Мехат_б.pdf
Скачиваний:
60
Добавлен:
10.05.2015
Размер:
2.34 Mб
Скачать

4

5

6

4

5

6

7

8

9

7

8

9

>> x(:,2:5)

 

 

 

 

ans =

 

 

 

 

 

2

3

1

2

 

 

5

6

4

5

 

 

8

9

7

8

 

 

>>

 

 

 

 

 

Запись x(:,2:5) означает все строки столбцов со 2-го по 5-й.

Программирование и m- файлы.

Структурные типы данных

Кроме простейшей для Матлаб структуры – матрицы, предопределены ещѐ структуры (struct) – аналог записей (record) языка Паскаль. Они также включают поля различных (неодинаковых) типов, которые идентифицируются не по индексу, как элементы массива, а по имени. Синтаксис вполне традиционный.

Пример 7

>> Colzveno=struct('T',0.01,'ksi',0.2,'K',12.34) Colzveno =

T: 0.0100 ksi: 0.2000

K:12.3400

>>Colzveno.T ans =

0.0100

Обратите внимание на первую стоку примера. В ней вызывается конструктор типа "структура", то есть специальная функция, создающая переменную типа "структура" с заданными полями. Аргументами этого конструктора служат пары "имя поля", "значение поля". Тип поля определяется по типу значения, по умолчанию – матрица. Создаѐтся, строго говоря, также не одна переменная, а массив структур. Добавив к имени структуры индексы, можно обратиться к другим элементам этого массива.

Пример 8

>> Colzveno(1) %проверяем первый элемент массива структур ans =

T: 0.0100 ksi: 0.2000

K:12.3400

>>Colzveno(2).ksi=0.1 %определяем одно поле второго элемента

Colzveno =

1x2 struct array with fields: % посмотрите, как изменился вывод

T ksi K

>>Colzveno(2) %проверяем второй элемент массива

ans = T: []

ksi: 0.1000 K: []

>>

Другая структура, используемая в Матлаб – массив ячеек (cell array). Он похож на вложенные массивы Маткада и состоит из элементов различного типа, в отличие от классических массивов, у которых все элементы однородны (одного типа). На первый взгляд, отличие в синтаксисе состоит в замене круглых скобок фигурными.

Пример 9

>>X{1}=123.567 X =

[123.5670]

>>X{2}='John was here' X =

[123.5670] 'John was here'

>>X{2,1}=Colzveno(1)

X =

[ 123.5670] 'John was here' [1x1 struct] []

>>

При создании массива ячеек или изменении его элементов так оно и есть.

Пример 10

>>X{2} ans =

T:0.0100 ksi: 0.2000

K:12.3400

>>X(2)

ans =

[1x1 struct]

>>

Обратите внимание, что круглые скобки тоже можно использовать, но результат оказывается иным. Используя фигурные скобки, мы можем "заглянуть внутрь" индексируемой ячейки, а используя круглые – только посмотреть на неѐ "снаружи", то есть увидеть, какого она типа.

Кроме того фигурные скобки являются конструктором массива ячеек

Пример 11

>> Y={'Jack was here too' Colzveno(2);[1 2 3;4 5 6] [7;8;9]}

Y =

 

'Jack was here too'

[1x1 struct]

[2x3 double]

[3x1 double]

>> Y(1,2)

 

ans =

 

[1x1 struct]