MATLAB Answers

Translated by

このページのコンテンツは英語から自動翻訳されています。自動翻訳をオフにする場合は「<a class="turn_off_mt" href="#">ここ</a>」をクリックしてください。

Jam
0

Attempting to use complex variable results in input array non-numeric error for polyval

Jam
さんによって質問されました 2019 年 5 月 19 日 13:50
最新アクティビティ Jam
さんによって 回答されました 2019 年 5 月 19 日 14:26
Say I have polynomial coefficients saved as
G11 = [1, 2, 3, 4];
and I wish to call polyval on said coefficients, except the nomenclature is made up of different variables as GXY where X equals group and Y equals day
group = 1;
day = 1;
I can run
sprintf('G%g%g', group, day);
ans =
'G11'
but when I run it with polyval I get an error
polyval(sprintf('G%g%g', group, day), 1);
Error using filter
Invalid data type. Input arrays must be numeric or logical.
Error in polyval (line 56)
y = filter(1,[1 -x],p);
I'm not sure how to provide an appropriate input for polyval. I have tried num2str and some other ideas. The reason I am doing this is because I have 6 polynomials to loop through to verify a value is out of a certain range before recording a final value.
Thanks

  0 件のコメント

サインイン to comment.

タグ

2 件の回答

回答者: Jan
2019 年 5 月 19 日 14:02
編集済み: Jan
2019 年 5 月 19 日 14:05
 採用された回答

Of course neither the char vector 'G11' nor any tricks with num2str can solve the problem. But hiding indoices in the names of variables is a bad idea at all. See TUTORIAL: How and why to avoid EVAL .
Use an array and indices instead:
G{1, 1} = [1,2,3,4];
group = 1;
day = 1;
polyval(G{group, day}, 1);

  0 件のコメント

サインイン to comment.


回答者: Jam
2019 年 5 月 19 日 14:26

Thanks for that Jan, worked like a treat. Need to make mistakes to learn I suppose. I hadn't quite connected my "relelvant variable naming" to indices so to speak.
Cheers,
J

  0 件のコメント

サインイン to comment.



Translated by