Создать матрицу - MATLAB - PullRequest
       4

Создать матрицу - MATLAB

1 голос
/ 20 января 2011

У меня есть это Mathematica , и я хочу создать его в MATLAB

pointers = 
  Table[If[experiment[[i, 1]]^2 + experiment[[i, 2]]^2 > 1, 0, 1], {i,
     1, npoints}];

Выходные данные, например, {0, 1, 1, 1, 1, 1, 0, 0, 1, 1}, для npoints = 10.

Я пробовал это, но это неправильно! (Сейчас я изучаю MATLAB, у меня есть кое-что от Mathematica)

assign=experiment(i,1)^2 +experiment(i,2)^2;
if assign>1
    assign=0;
else assign=1;
end
pointers=assign(1:npoints);

Я также сделал это, что дает вывод 1, но это неправильно:

for i=1:npoints
assign=length(experiment(i,1)^2 +experiment(i,2)^2);
if assign>1
    assign=0;
else assign=1;
end
end
pointers=assign

1 Ответ

2 голосов
/ 20 января 2011

Во втором примере вам нужно индексировать pointers, т.е. писать

pointers(i) = assign;

и не вызывать 'length' во второй строке.

Однако гораздо более простым решением будет написать

pointers = (experiment(:,1).^2 + experiment(:,2).^2) <= 1

При этом вы создаете в скобках новый массив с результатом суммы квадратов. Затем этот массив можно проверить на то, что он меньше или равен 1 (т.е. если он больше 1, результат равен 0), возвращая результат всех сравнений в массиве pointers.

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