cos関数を使用する​際に,「配列インデッ​クスは正の整数または logical 値でなければなりません。」と表示されてしまう

16 views (last 30 days)
Ryosuke Kon
Ryosuke Kon on 26 Oct 2020
Commented: Ryosuke Kon on 26 Oct 2020
ご覧いただきありがとうございます.
この度はcos関数についての質問があり投稿いたしました.
ーーー以下プログラムーーー
%サンプリング周波数
fs=1*10^9;
% パルスの1秒あたりの出力回数
f0=10/3*10^3;
% 時間軸
t = 0:1/fs:1/f0-1/fs;
% 周波数
fmix=120*10^6;
% 各周波数
omega=2*pi*fmix;
% cosを算出
cos=cos(omega0*t);
このプログラムを実行すると「配列インデックスは正の整数または logical 値でなければなりません。」と表示されてしまいます.
原因がわかる有識者の方,ご回答いただけると幸いです.

Accepted Answer

Shunichi Kusano
Shunichi Kusano on 26 Oct 2020
こんにちは。
cos = cos(*****);
という風に関数名と同じ変数名を使うと、こうしたエラーが発生します。
このプログラムを実行すると一度はエラーなしで実行されまして、"cos"は1x300000のベクトル配列になってしまいます。そして次にこのプログラムを実行すると、cos(ほにゃらら)の部分は、さきほど作ったcosという名前の配列のどこかの要素にアクセスするのだと解釈されます(たふんワークスペースにある変数名が検索最優先となるので)。MATLAB的には配列の要素にアクセスしようとしているのに、正の整数でもlogicalでもない値が入力されているので「それじゃ困る」というエラーが出ている状況かと思います。
一度clearして変数を消去したのち、変数名は関数名と一致しないものに変えて再度実行してみてください。この場合だと
sig = cos(omega*t);
とかでいいと思います。
  1 Comment
Ryosuke Kon
Ryosuke Kon on 26 Oct 2020
ご返答ありがとうございます.
只今試してみたところ解決しました.
ありがとうございました。

Sign in to comment.

More Answers (0)

Categories

Find more on Matrix Indexing in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!