добавить список к матрице в Matlab - PullRequest
1 голос
/ 21 февраля 2011

Я хотел спросить это:

Если у меня есть эта матрица:

magnetT=NaN(Maxstep,2);  

и хотите добавить к нему "{0 1}"

как я могу написать это?

Кроме того, если у меня есть это в Mathematica в цикле:

magnetT[[i]] = {T, Apply[Plus, Flatten[mlat]]/L2}

эквивалент в Matlab, не правда ли?

magnetT(i,2)=[T ,sum(mlat(:))./L2];

, потому что это дает мне: Несоответствие размера подписанного назначения.

Ошибка в ==> мегаполисе на 128 magnetT (я, 2) = [Т, сумма (MLAT (:)) ./ L2];

Спасибо

1 Ответ

1 голос
/ 21 февраля 2011

Я попытаюсь ответить на ваш первый вопрос на оба вопроса.

Вы спрашивали о добавлении массива NaN к {0,1}, который является массивом ячеек . Любые объекты данных могут быть легко объединены в массив ячеек:

>> anyData = NaN(3, 2);
>> newCellArray = {anyData; {0, 1}}

newCellArray = 

    [3x2 double]
    {1x2 cell  }

Если вместо этого вы пытаетесь объединить результаты в числовую матрицу, вам поможет следующее:

>> Maxstep=3;
>> magnetT=NaN(Maxstep,2);
>> newArray = [magnetT; 0 1]

newArray =

   NaN   NaN
   NaN   NaN
   NaN   NaN
     0     1

Что касается вашего второго вопроса, MATLAB жалуется на попытку сохранить вектор в одном элементе magnetT. При расчете:

magnetT(i,2)=[T ,sum(mlat(:))./L2];

правая сторона создаст вектор, в то время как левая сторона пытается сохранить этот вектор там, где ожидается скаляр. Я не знаю точно, чего вы пытаетесь достичь, и я не очень знаком с синтаксисом Mathematica, но, возможно, вам нужно сделать это вместо этого:

magnetT(ii,:) = [T sum(mlat(:))./L2];

или, другими словами:

magnetT(ii,1) = T;
magnetT(ii,2) = sum(mlat(:)) ./ L2;
...