cos関数を使用する際に,「配列インデックスは正の整数または logical 値でなければなりません。」と表示されてしまう
16 views (last 30 days)
Show older comments
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 値でなければなりません。」と表示されてしまいます.
原因がわかる有識者の方,ご回答いただけると幸いです.
0 Comments
Accepted Answer
Shunichi Kusano
on 26 Oct 2020
こんにちは。
cos = cos(*****);
という風に関数名と同じ変数名を使うと、こうしたエラーが発生します。
このプログラムを実行すると一度はエラーなしで実行されまして、"cos"は1x300000のベクトル配列になってしまいます。そして次にこのプログラムを実行すると、cos(ほにゃらら)の部分は、さきほど作ったcosという名前の配列のどこかの要素にアクセスするのだと解釈されます(たふんワークスペースにある変数名が検索最優先となるので)。MATLAB的には配列の要素にアクセスしようとしているのに、正の整数でもlogicalでもない値が入力されているので「それじゃ困る」というエラーが出ている状況かと思います。
一度clearして変数を消去したのち、変数名は関数名と一致しないものに変えて再度実行してみてください。この場合だと
sig = cos(omega*t);
とかでいいと思います。
More Answers (0)
See Also
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!