сравнить матрицу Matlab - PullRequest
       7

сравнить матрицу Matlab

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

в следующем коде я разочарован, потому что я хочу позволить matlab делать то, что я могу сделать для каждой руки. Этот код на самом деле работает хорошо, если я пишу его вручную для каждого шага, что, конечно, абсурдно глупо :) Но кто-нибудь может указать на ошибку, если я попытаюсь сделать это с циклами, как вы видите в прокомментированной части :( Еще раз спасибо , мгр

цель кода: спросите у matlab, есть ли x (1)

    clear;
x=[0 2 4 6 8 10];
y=[0 1.1 1.3 2 2.1 3.6 4.5 8.3 9];
z=zeros(9);
for j=1:length(y)
%     for i=1:length(x)
%         for k=1:length(y)
%         if (x(i)<y(j))&&(y(j)<x(i+1))
%             z(j,k)=(x(1)+x(2))./2;
%         else 
%             z(j,k)=y(j);
%             
%         end
%         end
%    end
% end
       if (x(1)<y(j))&&(y(j)<x(1+1))
            z(j,1)=(x(1)+x(2))./2;
        else 
            z(j,1)=y(j);

        end
        if (x(2)<y(j))&&(y(j)<x(2+1))
            z(j,2)=(x(2)+x(3))./2;
        else 
            z(j,2)=y(j);
        end
        if (x(3)<y(j))&&(y(j)<x(3+1))
            z(j,3)=(x(3)+x(4))./2;
        else 
            z(j,3)=y(j);
        end
 end

1 Ответ

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

В цикле вы пишете z(j,k), но в коде без цикла похоже, что вы делаете z(j,i)

также в цикле вы пишете: (x(1)+x(2)), без цикла, это выглядит как (x(i)+x(1+i))

Вы должны написать:

for j=1:length(y)
    for i=1:length(x)
        if (x(i)<y(j))&&(y(j)<x(i+1))
            z(j,i)=(x(i)+x(i+1))./2;
         else 
            z(j,i)=y(j);
        end
    end
end
...