数値の補間方法について

89 visualizaciones (últimos 30 días)
GeekField
GeekField el 3 de Sept. de 2021
Comentada: Hernia Baby el 11 de Sept. de 2021
ある行に数値が20点入ります。
しかし、未知数の箇所が20点内にところどころで9点あり、その未知数を求めたいのです。
直線補間とスプライン補間の両方を行いたいのですが、それぞれどのような構文を記載すればよいでしょうか?
直線補間は全体が直線上に数値が並ぶのではなく、既知と既知の間をそれぞれ線形補間を行いたいです。
スプライン補間については未知数を挟む既知だけでは計算ができないと思うので、ある程度周辺の値を利用して補間を行いたいです。
また、CSVファイル内の行の指定から教えていただけると幸いです。
同様に、列についても教えていただきたいです。
よろしくお願いいたします。

Respuesta aceptada

Hernia Baby
Hernia Baby el 3 de Sept. de 2021
まずは csvread で表を読み込みます
A = csvread('test.csv');
x = A(:,2);
y = A(:,3);
interp1 で 0 ~ 20まで 20点分の内挿を行います
y1が線形補間、y2がスプライン補間です
x1 = linspace(0,20,20)';
y1 = interp1(x, y, x1);
y2 = interp1(x, y, x1,'spline');
プロットします
figure
hold on
plot(x,y,'o')
plot(x1,y1,':.')
plot(x1,y2,'--')
  5 comentarios
GeekField
GeekField el 9 de Sept. de 2021
ご丁寧に解説いただきありがとうございます。
当方プログラミングそのものが始めたばかりであり、
If  や For 構文も使い方は多少分かっているつもりではございますが、実際に活用するとなると『?』となってしまいます。
解説してくださった元のCSVファイルをお見せいただくことは可能でしょうか?
私のCSVと照らし併せながら活用させていただきたいと思います。
よろしくお願いいたします。
Hernia Baby
Hernia Baby el 11 de Sept. de 2021
コメント遅れました。ごめんなさい。
このコメント内で使っているデータはcsvファイルを読み込んでいません。
以下の行で作っています。
これは i 番目の行に j = 1~15 番目の数字をA(i, j )に入れてます
そして j の処理が終わったら i + 1で同様の処理をさせてます
t = 1:9;
Fs = 20;
f = 1:15;
for i = t
for j = f
A(i,j) = sin(2*pi/Fs.*i.*j);
end
end
これはワークスペース内の変数をクリックすると構成を見ることができます
以下のように「;」つけずに変数を直打ちしても出るっちゃ出ますが、変数を見たほうが便利です
A
A = 9×15
0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 0.5878 0.3090 0.0000 -0.3090 -0.5878 -0.8090 -0.9511 -1.0000 0.5878 0.9511 0.9511 0.5878 0.0000 -0.5878 -0.9511 -0.9511 -0.5878 -0.0000 0.5878 0.9511 0.9511 0.5878 0.0000 0.8090 0.9511 0.3090 -0.5878 -1.0000 -0.5878 0.3090 0.9511 0.8090 0.0000 -0.8090 -0.9511 -0.3090 0.5878 1.0000 0.9511 0.5878 -0.5878 -0.9511 -0.0000 0.9511 0.5878 -0.5878 -0.9511 -0.0000 0.9511 0.5878 -0.5878 -0.9511 -0.0000 1.0000 0.0000 -1.0000 -0.0000 1.0000 0.0000 -1.0000 -0.0000 1.0000 0.0000 -1.0000 -0.0000 1.0000 0.0000 -1.0000 0.9511 -0.5878 -0.5878 0.9511 0.0000 -0.9511 0.5878 0.5878 -0.9511 -0.0000 0.9511 -0.5878 -0.5878 0.9511 0.0000 0.8090 -0.9511 0.3090 0.5878 -1.0000 0.5878 0.3090 -0.9511 0.8090 0.0000 -0.8090 0.9511 -0.3090 -0.5878 1.0000 0.5878 -0.9511 0.9511 -0.5878 -0.0000 0.5878 -0.9511 0.9511 -0.5878 -0.0000 0.5878 -0.9511 0.9511 -0.5878 -0.0000 0.3090 -0.5878 0.8090 -0.9511 1.0000 -0.9511 0.8090 -0.5878 0.3090 0.0000 -0.3090 0.5878 -0.8090 0.9511 -1.0000
csv形式でほしい場合は別途考えますのでコメントお願いします

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre 内挿 en Help Center y File Exchange.

Productos


Versión

R2021a

Community Treasure Hunt

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

Start Hunting!