ここから質問投稿すると、最大10000ポイント当たる!!!! >>

Matlab初心者です、よろしくお願いします。

Matlabでn×m行列のデータが入っているmatファイルからx×y行列のデータを変数に読み込みたいのですが、どうすれば良いのでしょうか?

ご教授していただけると助かります。

よろしくお願いします。

A 回答 (1件)

そうですね…



多分ですけど、matファイルに保存されている変数(行列)から一部だけを抜き出して
別の変数に入れるということはできなかったような気がします。

A=magic(5);
save tempA A;
load tempA;

B=A(2:4,2:4);

とすると、A(5×5)の真ん中を抜きとるような形になるんですが、
こういうことじゃだめなんですかね?

参考になれば幸いです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qmatlabでファイルをn行目から変数に読み込む方法

matlabでファイルをn行目から読み込む方法がわかりません。
具体的にはファイルの上9行に説明文が入っていて、10行目からtab区切りでn×m行列のデータが入っているファイルがあって、その中のn×m行列のデータを変数に代入したいのですが、その方法がわかりません。
loadで読み込もうとしたのですが上手くできません。もし読み込む方法があるのなら誰か教えてください。

Aベストアンサー

あまり詳しくないですが、
fopenしてfgetsで不要な行数だけ読み飛ばして、
fscanfというのでどうでしょう?

参考URL:http://www.utexas.edu/cc/math/Matlab/Manual/ReferenceIX.html

QMATLABで行列を配列に格納する方法

MATLAB初心者で大変申し訳ありませんが、行列の格納の仕方がわからないので、投稿させていただきました。

for k = 1:1:10
k=k;
t(:,:)=load(sprintf('test%5.5i.txt',k));
end
具体的に言いますと、上記のプログラムで、test00001~test00010.txtというファイルを任意の行列t(:,:)で読み込んでいるのですが、このt(:,:)をkと対応させて、例えばk=1の場合のtをt[1]、k=2の場合のtをt[2]などの配列に格納し、それを自由に呼び出し、計算を行いたいと考えております。
基礎がわかっていないためにどうしていいかわかりません。
宜しく御願いします。

Aベストアンサー

構造体を使うのが一番スマートでしょうか。

for k = 1:10
 FILE_DATA(k).t(:, :) = load(sprintf('test%5.5i.txt', k));
end

これで、FILE_DATA(1)~FILE_DATA(10)それぞれに行列tが格納されます。

Q多項式近似

エクセルであるデータの散布図を作りました。
ばらつきがみられたので、近似曲線をどうしようかと思ったのですが、6次の多項式近似を行ったところ、プロットした点をほぼすべて正確に通る近似曲線がひけました。
その近似式の式は
y==3E-10*x^6 - 8E-08*x^5 + 8E-06*x^4 - 0.0004*x^3 + 0.0091*x^2 - 0.0695x + 0.3314
でした。
R^2も0.999でほとんど1だったので、このデータ(曲線)の式=近似曲線の式とみなしてもいいと思ったのですが、ダメなのでしょうか?

実際のデータではx=97.12561のときy=6.37なのですが、この式に代入するとy=-14になってしまいます。
なぜでしょうか?
E-10というのは10^(-10)ということで正しいですよね?

Aベストアンサー

#1さんも言われているように単なる各項の有効桁数の不足による桁落ち誤差ですね。
多項式の各項の係数が1桁では、計算精度も高々1桁ですね。
x=97.12 ... ≒100=10^2ですから
y≒3*10^2-8*10^2+8*10^2-4*10^2+0.91*10^2-0.0695*10^2+0.003314*10^2
≒(3-8+8-4+0.9-0.1+0.0)*10^2
≒(-1.1+0.9)*10^2=-0.2*10^2
この計算は100の位だけが有効桁で10の桁は誤差の範囲に含まれ、有効桁数0桁に桁落ちしているということです。

なので100の桁が有効な桁なので、y=6.37もy=-14も見かけだけの数値で、その値が100より1桁以上、下の桁なので数値的意味はありません。

正確にy=6.37まで計算するには係数の有効桁数を6桁与えて計算し最後の桁を四捨五入しないといけないですね。
従って、エクセルで与える有効桁数を6桁以上にして計算しないといけないですね。エクセルの中では有効桁数は15桁(表示指定しなければ表示されないだけ)なので計算はその精度でやっています。
その係数を、人が介在して、表示されている係数データ(有効桁数を表示していない)を使って、近似多項式を書き写して入力しなおす作業で、有効桁数1桁の近似式になってしまいます。

>R^2も0.999でほとんど1だった
これは、エクセル中の表示されていない正確なデータを使って計算した数値だからです。
エクセルの中で保持しているデータの数値と、デホルト設定(あるいはエクセル使用者が設定した桁数設定)の表示データとは異なりますので、表示データをそのまま他で使わないように注意しないといけないですね。

#1さんも言われているように単なる各項の有効桁数の不足による桁落ち誤差ですね。
多項式の各項の係数が1桁では、計算精度も高々1桁ですね。
x=97.12 ... ≒100=10^2ですから
y≒3*10^2-8*10^2+8*10^2-4*10^2+0.91*10^2-0.0695*10^2+0.003314*10^2
≒(3-8+8-4+0.9-0.1+0.0)*10^2
≒(-1.1+0.9)*10^2=-0.2*10^2
この計算は100の位だけが有効桁で10の桁は誤差の範囲に含まれ、有効桁数0桁に桁落ちしているということです。

なので100の桁が有効な桁なので、y=6.37もy=-14も見かけだけの数値で、その値が100よ...続きを読む


人気Q&Aランキング