Optical System Designer で SemiDiameter を設定できない

「Create Simple Optical System」のページを読みながら、Optical System Designer の練習中です。ところが、教本どおりに記述すれば正しく動きますが、SemiDiameter を設定しようとするとエラーが出ます。
SemiDiameter を RectangleSize に変えてもダメです。どうすれば良いでしょうか?
% xx1.m
clear
close all
opsys = opticalSystem;
% これならOK
addRefractiveSurface(opsys,Radius=15,Material=[1.74 25.4],DistanceToNext=3)
addRefractiveSurface(opsys,Radius=-15,DistanceToNext=6.5)
% 下記ではエラーになる「関数または変数 'SemiDiameter' が認識されません。」
% addRefractiveSurface(opsys,SemiDiameter,5, ...
% Radius=15,Material=[1.74 25.4],DistanceToNext=3)
% addRefractiveSurface(opsys,SemiDiameter,5, ...
% Radius=-15,DistanceToNext=6.5)
% これでもエラーになる「関数または変数 'RectangleSize' が認識されません。」
% addRefractiveSurface(opsys,RectangleSize,[10 10], ...
% Radius=15,Material=[1.74 25.4],DistanceToNext=3)
% addRefractiveSurface(opsys,RectangleSize,[10 10], ...
% Radius=-15,DistanceToNext=6.5)
% 「これならOK」のときに下記で内容を確認しても、「SemiDiameter」の表示が出ない。
%  SemiDiameter デフォルト値であるはずの「5」も、どこにも表示されない。
opsys.Components(1)
addImagePlane(opsys)
rays = traceRays(opsys,Wavelengths=587.5618);
hv = view2d(opsys);
addRays(hv,rays)

 Accepted Answer

SemiDiameterもRectangleSizeも、「Name, Value」で指定しているため、エラーになっています。「Name=Value」の書き方にすればエラーなく実現できます。
addRefractiveSurface(opsys,SemiDiameter=5, ...
Radius=15,Material=[1.74 25.4],DistanceToNext=3)
addRefractiveSurface(opsys,RectangleSize=[10 10], ...
Radius=15,Material=[1.74 25.4],DistanceToNext=3)

2 Comments

おお、ご指導ありがとうございます。できました。
普通のコマンドのプロパティの設定のつもりでやっていました。それにしては、プロパティ名を「'」で囲んでいないことを不思議には思っていましたが・・・。私の注意不足でした。以後、気を付けます。
従来からある関数はName, ValueとName=Valueのどちらでもオプションを指定できますが、addRefractiveSurfaceのような新しい関数だとName=Valueのみの指定をサポートしています。私も最初気付きませんでした。

Sign in to comment.

More Answers (0)

Products

Release

R2026a

Asked:

on 2 Jun 2026 at 8:49

Commented:

on 3 Jun 2026 at 4:16

Community Treasure Hunt

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

Start Hunting!