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

조회 수: 15 (최근 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 CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!