2012-02-27 16 views
0

ユーザーからの入力を配列に格納する方法を教えてください。 C++では、使用前に配列を定義しなければならなかったし、unknowサイズに動的メモリを割り当てる必要がありました。しかし、このプログラムでは、配列からユーザーからの入力を受け取ると、すべての値ではなく最後に入力された値が格納されます。私は何をすべきか。Matlab配列の処理

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

答えて

0

EDIT:

私は申し訳ありません私はそれを見て、初めてを誤解し、tmpearceは袋にそれを持っていると思います。私は私の答えを訂正していますが、それはtmpearceのようなものをたくさん見ています。

freq = [f]; 

fを含む配列であることをfreqを設定する:あなたが文を実行ループラウンド毎ターンで

% 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) 
+0

他の方法で。私が書いたこのコードの基本を知らないからです。実際は私は初心者です。 – scorpion

+0

@scorpion、tmpearceと私の修正されたコードとの間のnpあなたはかなり座っているべきです。 – macduff

1

。代わりに、freq = [freq f];を試してください。また、freqが大きくなる場合、これはあまり効率的でないかもしれません。

あなたは物事が少しより効率的に、そしてあなたが一つだけで、ベクトルの長さを定義として、あなたは、より簡単に、あなたが入力したユーザを求めているどのように多くの値を変更することができ、あなたの配列を事前に割り当てることにより
+0

C/C++のように配列を宣言する方法はあります – scorpion

+0

配列にfreq = nan(1,10);などの配列をあらかじめ割り当てて、1行10列の配列を作ることができます。ループ中にどの要素が挿入されているかを把握しておいてください( 'i'がインデックスの場合は' freq(i)= f; – tmpearce

1
%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 

場所。入力の検証を追加して、たとえば数値が戻ってくることを確認することもできます。