2つの異なる行列を使用して計算を実行しようとしていますが、わずかに異なる形式になっています。不規則なステップを持つ行列の空白を埋める
1つのマトリックスは、波長200nmから2600nmまでの材料の反射率値で満たされているため、個々の波長は1の単位で反射率値を持ちます。
第2のマトリックスは、各波長に存在するエネルギーの量を格納する太陽エネルギーマトリックスです。しかし、これは不規則な段差を有し、280nmから4000nmの範囲である。しかし、280nmから400nmまでは0.5nm単位で、400nmから1705nmまでは1nm単位で、1750nmから4000nmまでは5nm単位で行われます。
私がやってみようとしてきたことは、この太陽エネルギーマトリックスを編集して、1nmのステップで全範囲を与えることです。上記
filename='H:\I_sol data.csv';
Dataisol = csvread(filename,1,0);
for j=1:1:count
if Dataisol(j,:)~=Dataisol(j+1,:)-1 %compare the wavelength to the value of the next wavelegth
newx=(Dataisol(j,:)+[1,0]) %if the next wavelength is not 1 larger than the previous, add a new row
newx(1,2)=NaN %make the new row to add blank
Dataisol=insertrows(Dataisol, newrow, j+1) %insert the new blank row
end
end
私はちょうど波長間5nmのジャンプがある新しい行に追加することにより、ギャップを埋めるためにしようとしています現時点では、使用を開始したものです。いったん私は欠けている要素を作成することができたら、私は正しい値(おそらく2つの値の中間点)にそれらを移入することに注意を向けるでしょう。
私の最終目標は両方の行列をトリミングすることですそれらは両方とも同じ開始波長と終了波長を持ち、両方とも1nmの増分を持ちます(興味のため、またはこれが誰かにとって些細なことであれば助言をします)。これらのギャップを埋める方法やマトリックスに必要な変更を加える方法を知っている人は、大きな助けになるでしょう! csvファイルの
例:ここ
Wvlgth nm Etr W*m-2*nm-1
280.0 8.2000E-02
280.5 9.9000E-02
281.0 1.5000E-01
281.5 2.1200E-01
282.0 2.6700E-01
282.5 3.0300E-01
283.0 3.2500E-01
283.5 3.2300E-01
284.0 2.9900E-01
284.5 2.5024E-01
285.0 1.7589E-01
285.5 1.5500E-01
286.0 2.4200E-01
... .....
428.0 1.6510E+00
429.0 1.5230E+00
430.0 1.2120E+00
431.0 1.0990E+00
432.0 1.8220E+00
433.0 1.6913E+00
434.0 1.5600E+00
435.0 1.7090E+00
436.0 1.8680E+00
437.0 1.9000E+00
438.0 1.6630E+00
439.0 1.6010E+00
440.0 1.8300E+00
.... .....
2205.0 8.0900E-02
2210.0 8.0810E-02
2215.0 8.0410E-02
2220.0 7.9990E-02
2225.0 7.8840E-02
2230.0 7.8400E-02
2235.0 7.7930E-02
2240.0 7.6510E-02
2245.0 7.6250E-02
2250.0 7.5370E-02
... .....
は、私は次のように呼ばれるinterp1を関数で使用される変数を割り当てるために使用するコードである:
solx=Dataisol(:,1);
soly=Dataisol(:,2);
xi=280:1:2600;
newsol = [xi interp1(solx,soly,xi,'linear','extrap')];
これらの変数に格納されている値と、受け取ったエラーは次のとおりです。
"newsol = ..."という行は、単独で、またはforループ内に挿入する必要がありますか?私はそれをインパメントしようとしましたが、受信者は次のエラー:(エラーはgriddedInterpolantを使用しています。 –
ループを必要としない – etmuse
私はまだそれを働かせることができないようだ、私は私の変数がどのように見えるか、そして私が得ているエラーを示すいくつかのさらなる情報を追加した –