Создание массива с атрибутами существующей переменной

Михаил
28.03.2013 17:05:10

Создание массива с атрибутами существующей переменной

В MATLAB R2013a такие функции как ones, zeros, eye, Inf, NaN, true, false и cast теперь могут возвращать результат, который соответствует аттрибутам некоторой переменной. Поддерживаемые аттрибуты включают в себя: тип данных, разреженность и комплексность (мнимое или действительное число).

Делать это мы можем при помощи пары аргументов ('like',variable_name), передаваемых в соответствующую функцию.

Например, мы можем наследовать тип данных:

% Создадим массив 2-на-3, состоящий из 8-битных безнаковых чисел:
p = uint8([1 3 5 ; 2 4 6])
% Создадим массив нулей такого же размера и типа данных, как p:
X = zeros(size(p),'like',p)
class(X)
p =

    1    3    5
    2    4    6


X =

    0    0    0
    0    0    0


ans =

uint8

Можем наследовать разреженность:

% Создадим разреженную матрицу 5-на-5:
p = sparse(5,5,pi)
% Создадим единичную матрицу 5-на-5, которая разреженная, как p:
I = eye(5,'like',p)
p =

   (5,5)       3.1416


I =

   (1,1)        1
   (2,2)        1
   (3,3)        1
   (4,4)        1
   (5,5)        1

Или комплексность:

% Создадим комплексный вектор p единичной точности:
p = single([1+i 2])
% Создадим матрицу из единиц размером 2-на-3:
A = ones(2,3)
% Преобразуем A к такому же типу и комплексности, как p:
B = cast(A,'like',p)
class(B)
p =

   1.0000 + 1.0000i   2.0000 + 0.0000i


A =

     1     1     1
     1     1     1


B =

   1.0000 + 0.0000i   1.0000 + 0.0000i   1.0000 + 0.0000i
   1.0000 + 0.0000i   1.0000 + 0.0000i   1.0000 + 0.0000i


ans =

single

Я думаю, что это очень удобная новая возможность.

Просмотров: 1622
Комментариев: 0
Добавить комментарий