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

17 ビュー (過去 30 日間)
Ryosuke Kon
Ryosuke Kon 2020 年 10 月 26 日
コメント済み: Ryosuke Kon 2020 年 10 月 26 日
ご覧いただきありがとうございます.
この度は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 値でなければなりません。」と表示されてしまいます.
原因がわかる有識者の方,ご回答いただけると幸いです.

採用された回答

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

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

Community Treasure Hunt

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

Start Hunting!