Делать выводы из массива в Matlab? - PullRequest
0 голосов
/ 24 августа 2010

У меня есть массив из 20 элементов, и я хотел бы сделать их вывод, чтобы я мог ввести его в другую программу.

pos = [0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,]

Я хотел бы использовать это как входные данные для другой программы

function [lowest1, lowest2, highest1, highest2, pos(1), pos(2),... pos(20)]

Я пробовал это, и это не работает, есть ли другой способ сделать это?

Ответы [ 3 ]

2 голосов
/ 24 августа 2010

Я немного растерялся, почему вы захотите это сделать. Зачем вам 20 выходов, когда вы можете просто вернуть pos как один выход, содержащий 20 элементов?

Однако, тем не менее, вы можете использовать специально названную переменную varargout в качестве последней выходной переменной и назначить ей ячейку, и элементы ячейки будут расширены в выходные данные функции. Вот пример:

function [lowest1, lowest2, highest1, highest2, varargout] = myfun
  % First set lowest1, lowest2, highest1, highest2, and pos here, then:
  varargout = num2cell(pos);
1 голос
/ 24 августа 2010

Если то, что вы пытаетесь сделать, это перестроить свой массив, чтобы передать его другой функции Matlab, вот оно.

как одна переменная:

s=unique(pos);
q=[s(1) s(2) s(end-1) s(end) pos];
otherFunction(q);

Как 24 переменных:

s=unique(pos); otherFunction(s(1), s(2), s(end-1), s(end), pos(1), pos(2), pos(3), pos(4), pos(5), pos(6), pos(7), pos(8), pos(9), pos(10), pos(11), pos(12), pos(13), pos(14), pos(15), pos(16), pos(17), pos(18), pos(19), pos(20));

Я настоятельно рекомендую первый вариант.

Вот два примера работы с этой единственной переменной. Вы все еще можете получить доступ ко всем его частям.

Пример 1: взять среднее всех его частей.

<code>function otherFunction(varargin)
    myVar=cell2mat(varargin);
    mean(myVar)
end

Пример 2. Разделите переменную на составные части. В нашем случае в рабочей области создается 24 переменные с именами от var1 до var24.

<code>function otherFunction(varargin)
    for i=1:nargin,
        assignin('base',['var' num2str(i)],varargin{i});
    end
end

Надеюсь, это поможет.

0 голосов
/ 24 августа 2010

Подумайте об использовании структуры, чтобы вернуть столько значений из функции. Тщательно выбранные имена полей делают «возвращаемое значение» само декларативным.

function s = sab(a,b)
  s.a = a;
  s.b = b;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...