если a <x <b в matlab - PullRequest
       16

если a <x <b в matlab

1 голос
/ 25 ноября 2011

Мне нужна помощь для метода мышления Матлаба. Думаю, я могу лучше объяснить свою проблему на простом примере. Допустим, у меня есть характерная функция x = y + x0, x0 являются начальными значениями. Затем я хочу определить свою функцию в сетке. Затем я определяю более точную сетку и хочу спросить его, знает ли он, где произвольно x *, y *) is. Чтобы определить это математически, я должен спросить, где находится соответствующая начальная точка (x0 *). Если эта начальная точка остается между x (i, 1)

    clear
    %%%%%%%%%%&First grid%%%%%%%%%%%%%%%%%%%%
    x0=linspace(0,10,6);
    y=linspace(0,5,6);
    for i=1:length(x0)
        for j=1:length(y)
            x(i,j)=y(j)+x0(i);

    %%%%%%%%%%%%%%%%%%%Second grid%%%%%%%%%%%%%%%%%%
    x0fine=linspace(0,10,10);
    yfine=linspace(0,5,10);
    for p=1:length(x0fine)
        for r=1:length(yfine)
            xfine(p,r)=yfine(r)+x0fine(p);
    if (x(i,1)<xfine(p,1)')&(x0fine(p,1)'<x(i+1,1))%%%%I probabliy have my first mistake %here
%             if y(j)<yfine(r)<y(j+1)
%                 xint(i,j)=(x(i,j)+x(i,j+1)+x(i+1,j)+x(i+1,j+1))./4;
%             else 
%                xint(i,j)= x(i,j);
            %end
end
end
end
end

Ответы [ 2 ]

6 голосов
/ 25 ноября 2011

Хотя a < b < c является законным синтаксисом MATLAB, я сомневаюсь, что он делает то, что вы думаете, он делает. не проверяет, что a < b и b < c.Что он делает, он проверяет, a < b, возвращает ли логическое значение (может быть, массив логики), а затем, интерпретирует это логическое значение как 0 или 1 , сравнивает его с c:

>> 2 < 0 < 2

ans =

     1

>> 2 < 0 < 1

ans =

     1

>> 0 < 0 < 1

ans =

     1
0 голосов
/ 25 ноября 2011

Во-первых, в Matlab вы должны избегать как можно больше циклов.Например, вы можете вычислить x и xfine, используя следующий код:

x0=linspace(0,10,6);
y=linspace(0,5,6);
x=bsxfun(@plus,x0',y);
x0fine=linspace(0,10,10);
yfine=linspace(0,5,10);
xfine=bsxfun(@plus,x0fine',yfine);

Затем (X *, y *) вы хотите штрафовать x0 *, в вашем простом примере вы можете просто сделать: x0* = x * -y *, я думаю.

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