2013-10-27 2 views
-2

Я искал сеть за пару утра и ничего не нашел, надеюсь, что вы сможете помочь.Постоянная анонимная функция matlab возвращает только одно значение вместо массива

У меня есть анонимная функция, как этот

f = @(x,y) [sin(2*pi*x).*cos(2*pi*y), cos(2*pi*x).*sin(2*pi*y)]; 

, которая должна быть оценена на множестве точек, что-то вроде

x = 0:0.1:1; 
y = 0:0.1:1; 
w = f(x',y'); 

Теперь, в приведенном выше примере все работает отлично, результат w - матрица 11x2, в каждой строке правильное значение f (x (i), y (i)). Проблема возникает, когда я изменить функцию, чтобы иметь постоянные значения:

f = @(x,y) [0, 1]; 

Теперь, даже с входами массива, как и прежде, я получаю только из массива 1х2, как ш = [0,1]; , хотя, конечно, я хочу иметь ту же структуру, что и раньше, т. Е. Матрицу 11x2.

Я понятия не имею, почему Matlab делает это ...

EDIT 1 К сожалению, я думал, что это было довольно ясно из того, что я написал в оригинальный вопрос, но я вижу, что некоторые из вас просят, так что здесь является уточнением: я хочу, чтобы снова иметь матрицу 11x2, так как я питаю функцию массивами с 11 элементами. Это означает, что я ожидаю получить результат точно так же, как в первом примере, только с измененными значениями в нем: матрица с 11 строками и двумя столбцами, с только значениями 0 в первом столбце и только значениями 1 во втором, поскольку для все x (i) и y (i) ответом должен быть вектор [0,1]. Это означает, что я рассчитывать на:

w = [0 1 
    0 1 
    0 1 
    ... 
    0 1] 

кажется довольно естественным для меня ...

+1

Почему вы ожидаете '@ (х, у) [0, 1]', чтобы вернуться еще, но любое другое что '[0,1] '????? – Shai

+0

Я уточнил вопрос с уточнением – Filo

+0

Я понятия не имею, почему это занижено. Я думаю, что это вполне разумный вопрос, когда кто-то, приезжающий в Матлаб, формирует более математический фон. –

ответ

1

Вы определяете функцию f = @(x,y) [0, 1]; которая имеет входные параметры х, у и выход [0,1]. Что еще вы ожидаете?

Update:

Это должно соответствовать Вашему описанию:

[email protected](x,y)[zeros(size(x)),ones(size(y))] 
g(x',y') 
+0

Я уточню вопрос с разъяснением – Filo

+0

@Filo: Обновлен мой ответ – Daniel

+0

Да, спасибо ... Я думал, что Matlab по умолчанию вернет значение того же размера входов, но теперь я думаю, что я начинаю видеть недостаток в моих рассуждениях. Спасибо за помощь – Filo

Смежные вопросы