对于文で出力れるを配列代入たいたい

12 views (last 30 days)
健太郎 石崎
健太郎 石崎 on 4 Nov 2021
yの値を以下のeqn4に代入すると、xの値が範囲ごとに出てきます
このプログラムでは、forでyの範囲指定をすると、y=39.2のときのxの値、y=39.21の時のxの値というように繰り返しコマンドウインドウに出力されます。
この缲り返しさを(SX1,SX2)ににたいのです,どのようににすれのでしょうか??
sx1:出力されたsolx1の値のみが含まれる
sx2:出力されたsolx2の値のみが含まれる
symsx y
%x = -0.1921;
fory = 39.2:0.01:39.26
eqn4 = ((abs(-30+y)/sqrt(x^2+1^2))-8.825226)^2 +...
((abs(-40+y)/sqrt(x^2+1^2))-0.980581)^2 +...
((abs(10*x-30+y)/sqrt(x^2+1^2))-6.864065)^2 +...
((abs(10*x-40+y)/sqrt(x^2+1^2))-2.941742)^2 +...
((abs(20*x-30+y)/sqrt(x^2+1^2))-4.902903)^2 +...
((abs(20*x-40+y)/sqrt(x^2+1^2))-4.902903)^2 +...
((abs(30*x-30+y)/sqrt(x^2+1^2))-2.941842)^2 +...
((abs(30*x-40+y)/sqrt(x^2+1^2))-6.864065)^2 +...
((ABS(40*x-30+y)/sqrt(x^2+1^2)) - 0.980581)^2+...
((abs(40*x-40+y)/sqrt(x^2+1^2))-8.825226)^2 +...
((ABS(ABS(50*x-20+y)/sqrt(x^2+1^2)) - 8.825226)^2+...
((abs(50*x-30+y)/sqrt(x^2+1^2))-0.980581)^2 +...
((abs(60*x-20+y)/sqrt(x^2+1^2))-6.864065)^2 +...
((abs(60*x-30+y)/sqrt(x^2+1^2))-2.941742)^2 +...
((abs(70*x-20+y)/sqrt(x^2+1^2))-4.902903)^2 +...
((abs(70*x-30+y)/sqrt(x^2+1^2))-4.902903)^2 +...
((abs(80*x-20+y)/sqrt(x^2+1^2))-2.941742)^2 +...
((abs(80*x-30+y)/sqrt(x^2+1^2))-6.864065)^2 +...
((ABS(90*x-20+y)/sqrt(x^2+1^2)) - 0.980581)^2+...
((abs(90*x-30+y)/sqrt(x^2+1^2))-8.825226)^2 == 1.000000009427;
solx1 = vpasolve(eqn4,x,[-0.2 -0.143])
solx2 = vpasolve(eqn4,x,[-0.3 -0.2])
end
solx1 =
solx2 =
solx1 =
solx2 =
solx1 =
solx2 =
solx1 =空符号:0-by-1
solx2 =
solx1 =空符号:0-by-1
solx2 =
solx1 =空符号:0-by-1
solx2 =
solx1 =空符号:0-by-1
solx2 =
出力結果は以下のようになっています。
出力される値がemptyの時には、配列に代入しないようにしたいです。
1 Comment
健太郎 石崎
健太郎 石崎 on 4 Nov 2021
eqnではありませんでした。eqn4です。
配列はsx1,sx2と分けて作成したいです。

Sign in to comment.

Answers (1)

Atsushi Ueno
Atsushi Ueno on 4 Nov 2021
symsx y
%x = -0.1921;
sx1 = []; sx2 = [];
fory = 39.2:0.01:39.26
eqn4 = ((abs(-30+y)/sqrt(x^2+1^2))-8.825226)^2 +...
((abs(-40+y)/sqrt(x^2+1^2))-0.980581)^2 +...
((abs(10*x-30+y)/sqrt(x^2+1^2))-6.864065)^2 +...
((abs(10*x-40+y)/sqrt(x^2+1^2))-2.941742)^2 +...
((abs(20*x-30+y)/sqrt(x^2+1^2))-4.902903)^2 +...
((abs(20*x-40+y)/sqrt(x^2+1^2))-4.902903)^2 +...
((abs(30*x-30+y)/sqrt(x^2+1^2))-2.941842)^2 +...
((abs(30*x-40+y)/sqrt(x^2+1^2))-6.864065)^2 +...
((ABS(40*x-30+y)/sqrt(x^2+1^2)) - 0.980581)^2+...
((abs(40*x-40+y)/sqrt(x^2+1^2))-8.825226)^2 +...
((ABS(ABS(50*x-20+y)/sqrt(x^2+1^2)) - 8.825226)^2+...
((abs(50*x-30+y)/sqrt(x^2+1^2))-0.980581)^2 +...
((abs(60*x-20+y)/sqrt(x^2+1^2))-6.864065)^2 +...
((abs(60*x-30+y)/sqrt(x^2+1^2))-2.941742)^2 +...
((abs(70*x-20+y)/sqrt(x^2+1^2))-4.902903)^2 +...
((abs(70*x-30+y)/sqrt(x^2+1^2))-4.902903)^2 +...
((abs(80*x-20+y)/sqrt(x^2+1^2))-2.941742)^2 +...
((abs(80*x-30+y)/sqrt(x^2+1^2))-6.864065)^2 +...
((ABS(90*x-20+y)/sqrt(x^2+1^2)) - 0.980581)^2+...
((abs(90*x-30+y)/sqrt(x^2+1^2))-8.825226)^2 == 1.000000009427;
solx1 = vpasolve(eqn4,x,[-0.2 -0.143]);
solx2 = vpasolve(eqn4,x,[-0.3 -0.2]);
% この繰り返し出力される値を配列(sx1,sx2)に代入したいのですが、どのようにすれば良いのでしょうか?
if~isempty(solx1)
这位朋友=[朋友说;solx1];% sx1:出力されたsolx1の値のみが含まれる
end
if〜Isempty(SOLX2)
sx2 = [sx2; solx2];% sx2:出力されたsolx2の値のみが含まれる
end
end
sx1
sx1 =
sx2
sx2 =
1 Comment
健太郎 石崎
健太郎 石崎 on 5 Nov 2021
実際にやってみたところ、値をまとめて配列に代入することができました。
ありがとうございました。

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!