2013-09-09 4 views
0

Рассмотрим пример,Для отображения значений переменных используются

x=rand(5,1) 
    y=rand(5,1) 
    X=x.^2+y.^2 
    d=min(X) 

Я хочу, чтобы выбрать те значения х и у, соответствующие которым значение «D» находится на хранении! Как это сделать?

+0

объяснить немного больше того, что вы имеете в виду, возможно, к примеру? – MZimmerman6

+0

LET ME SAY x = 2, y = 3, тогда X = 13, когда x = 3, y = 4, X = 25, x = 4, y = 5, тогда X = 41. Поскольку d = min (X) => d = min (13,25,41) = 13. Теперь 13 соответствует x = 2 и y = 3. Я хочу показать это x и y. Как мне это сделать? – Misha

+0

@ Миша. Я знаю, что такое экспоненты. Вы не объяснили, хотите ли вы попробовать все комбинации 'x' и' y', или просто отдельные индексы умножаются вместе – MZimmerman6

ответ

3

Если вы ищете, чтобы найти й и у значения для минимума, что вы нашли с помощью d=min(X) Я думаю, что вы хотите использовать:

x(X==d) 
y(X==d) 
+0

Большое спасибо – Misha

+0

Нет проблем, я был там. Счастливый Матлабинг! – Fraukje

0

Подумав об этом, я думаю, что это то, что вы имеете в виду. Вам нужны значения x и y, которые создадут минимальное значение, которое возвращается min(X). Приведенный ниже код будет делать это

x=rand(5,1); 
y=rand(5,1); 
[xx,yy] = meshgrid(x,y); 
X=xx.^2+yy.^2; 
[i,j] = find(X == min(X(:))); 
minX = x(i) 
minY = y(j) 

Или есть уборщик версия, использующая bsxfun, который удаляет использование meshgrid

x=rand(5,1); 
y=rand(5,1)'; 
multFunc = @(x,y) x.^2+y.^2; 
X = bsxfun(multFunc,x,y); 
[i,j] = find(X == min(X(:))); 
minX = x(i) 
minY = y(j) 
+0

большое спасибо – Misha

0
x=rand(5,1); 
y=rand(5,1); 
X=[x.^2+y.^2 x y ]; %Put all together 
d=find(X(:,1)'==min(X(:,1))); %Get row of minimum 

X(d,2:end) %gives you x & y 
+0

thanx вы очень – Misha