Matlab Arrays Handling - PullRequest
       2

Matlab Arrays Handling

0 голосов
/ 27 февраля 2012

Как я могу сохранить входные данные от пользователя в массиве. Хорошо в C ++ мы должны были определить массив перед использованием или должны были назначить динамическую память для неизвестного размера. Но здесь, в этой программе, когда я принимаю ввод от пользователя в массиве, он сохраняет последнее введенное значение, а не все значения. Что мне делать.

for x=1:1:2
f=input('Please enter the frequency for Sinusoid Graph');
freq=[f];
end
disp(freq)

Ответы [ 3 ]

1 голос
/ 27 февраля 2012

На каждом обороте цикла вы выполняете оператор:

freq = [f];

, который устанавливает freq в массив, содержащий значение f. Вместо этого попробуйте freq = [freq f]; И обратите внимание, что это может быть не очень эффективно, если частота растет.

1 голос
/ 27 февраля 2012
%pre-allocate a 2 element vector

num_inputs = 2;    
freq=nan(1,num_inputs);
    %iterate from the start to the end of your freq vector
    for i=1:length(freq)
      f=input('Please enter the frequency for Sinusoid Graph');
      if(~isempty(f))
        %if a value was input, store it in freq
        freq(i) = f;
      end
    end

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

0 голосов
/ 27 февраля 2012

EDIT:

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

% preallocate array
freq = zeros(1,2);
for x=1:1:2
  % prompt user for input
  f=input('Please enter the frequency for Sinusoid Graph');
  % make sure something got entered
  if( ~isempty(f) )
    % save the data in your array
    freq(x) = f(end);
  else
    % alert user about the problem and quit
    disp('You did not enter a frequency!');
    break;
  end
end
disp(freq)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...