MATLAB - матричная функция с независимой переменной? - PullRequest
0 голосов
/ 04 февраля 2011

Я пытаюсь создать функцию, которая возвращает матрицу, содержащую переменную "l", которая является независимой переменной, которая будет развернута для графика позже.

Я бы вычислил "фи" на основе пользовательских данных, которые включают "n" и "d", затем я бы использовал "n", "d" и "фи", чтобы найти "a", "b", " c "и" d ", чтобы создать матрицу" m "с. Эта матрица "m" будет функцией "l".

phi = 2*pi*n*d/l;
a = cos(phi);
b = 1i*sin(phi)/n;
c = 1i*n*sin(phi);
d = cos(phi);
m = [a b;c d];

Мне действительно не нравится стиль кодирования MATLAB по сравнению с C ++ и Python ... Как вы, ребята, реализовали бы эту функциональность?

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

Ответы [ 2 ]

3 голосов
/ 04 февраля 2011

Вы можете два варианта.

1) Создайте функцию, которая возвращает матрицу на основе n, d, l

BuildM = @(n,d,l)[cos((2*pi*d*n)/l),(sin((2*pi*d*n)/l)*i)/n;n*sin((2*pi*d*n)/l)*i,cos((2*pi*d*n)/l)];

BuildM(4,2,100)  %ans=[0.8763,0.1204i;1.9270i,0.8763]

2) Используйте символическую панель инструментов (если возможно)

syms n,d,l
phi = 2*pi*n*d/l;
a = cos(phi);
b = 1i*sin(phi)/n;
c = 1i*n*sin(phi);
d = cos(phi);
m = [a b;c d];

subs(m,{'n','d','l'},{4,2,100})  %ans=[0.8763,0.1204i;1.9270i,0.8763]
2 голосов
/ 04 февраля 2011

Вы хотите использовать символический набор инструментов ?

Если это так, я полагаю, вы хотите:

phi = 2*pi*n*d/sym('l');
a = cos(phi);
b = 1i*sin(phi)/n;
c = 1i*n*sin(phi);
d = cos(phi);
m = [a b;c d];

И немного ли вы в стороневашего псевдонима d?Это намеренно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...