cos関数を使用する際に,「配列インデックスは正の整数または logical 値でなければなりません。」と表示されてしまう
조회 수: 15 (최근 30일)
이전 댓글 표시
ご覧いただきありがとうございます.
この度は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
채택된 답변
Shunichi Kusano
2020년 10월 26일
こんにちは。
cos = cos(*****);
という風に関数名と同じ変数名を使うと、こうしたエラーが発生します。
このプログラムを実行すると一度はエラーなしで実行されまして、"cos"は1x300000のベクトル配列になってしまいます。そして次にこのプログラムを実行すると、cos(ほにゃらら)の部分は、さきほど作ったcosという名前の配列のどこかの要素にアクセスするのだと解釈されます(たふんワークスペースにある変数名が検索最優先となるので)。MATLAB的には配列の要素にアクセスしようとしているのに、正の整数でもlogicalでもない値が入力されているので「それじゃ困る」というエラーが出ている状況かと思います。
一度clearして変数を消去したのち、変数名は関数名と一致しないものに変えて再度実行してみてください。この場合だと
sig = cos(omega*t);
とかでいいと思います。
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!