質問: 0:1/fs:1/f0-1/fs; % 周波数 fmix=120*10^6; % 各周波数 omega=2*pi*fmix; % cosを算出 cos=cos(omega0*t); このプログラムを実行すると「配列インデックスは正の整数または logical 値でなければなりません。」と表示されてしまいます. 原因がわかる有識者の方,ご回答いただけると幸いです.
回答: こんにちは。 cos = cos(*****); という風に関数名と同じ変数名を使うと、こうしたエラーが発生します。 このプログラムを実行すると一度はエラーなしで実行されまして、"cos"は1x300000のベクトル配列になってしまいます。そして次にこのプログラムを実行すると、cos(ほにゃらら)の部分は、さきほど作ったcosという名前の配列のどこかの要素にアクセスするのだと解釈されます(たふんワークスペースにある変数名が検索最優先となるので)。matlab的には配列の要素にアクセスしようとしているのに、正の整数でもlogicalでもない値が入力されているので「それじゃ困る」というエラーが出ている状況かと思います。 一度clearして変数を消去したのち、変数名は関数名と一致しないものに変えて再度実行してみてください。この場合だと sig = cos(omega*t); とかでいいと思います。