0

以下のデータの.matファイルを出力する必要があります。セル(1,1)をMean_RPM_list1にする1つのファイル、セル(2,1)をMean_RPM_list2にする必要があります。次に、cell(1,1)をMean_Torque_list1にする別のファイルが必要です。 1).....など。

誰かが私のためにこれに光を当てることができますか?また、誰かが行列AとBの呼び出しを自動化して、A = [Mean_rpm1:Mean_rpmMAX]にする方法を知っている場合は、これも非常に役立ちます。

助けを求めるTIA。

A = [Mean_rpm1 Mean_rpm2 Mean_rpm3 Mean_rpm4 Mean_rpm5 Mean_rpm6 Mean_rpm7 Mean_rpm8 Mean_rpm9 Mean_rpm10 Mean_rpm11 Mean_rpm12];

B = [Mean_torque1 Mean_torque2 Mean_torque3 Mean_torque4 Mean_torque5 Mean_torque6 Mean_torque7 Mean_torque8 Mean_torque9 Mean_torque10 Mean_torque11 Mean_torque12];

plot(A,B,'*')


for i = 1:num_bins;
  bin = first + ((i-1)/10);
  eval(sprintf('Mean_RPM_list%0.f = A;',bin*10));
  eval(sprintf('Mean_Torque_list%0.f = B;',bin*10));  
end
4

2 に答える 2

0

まず第一に、これは、番号が異なる名前の変数のセットを作成することは本当に悪い考えです。このような変数を処理するのは非常に難しいことがわかるように、常にeval(または他の関連する)ステートメントを使用する必要があります。

セル配列Mean_rpmを作成し、その要素にMean_rpm{1}などとしてアクセスする方がはるかに簡単です。

ベクトルが数値で同じサイズの場合は、2D/3D配列を作成することもできます。次に、Mean_rpm(:、:、1)などとしてアクセスします。

次に、セル配列をmat-fileに格納するには、MATLABでこの配列を作成する必要があります。ループ内のパーツごとにそれを行うオプションは(少なくとも今のところは)ありません。(しかし、matfileオブジェクトを使用して数値ベクトルと行列に対してそれを行うことができます。)では、なぜこの中間のMean_RPM_list変数が必要なのですか?Mean_RPM_list{bin*10} = Aループで行うだけです。

最初の質問では、これらの変数がすでにある場合は、ループでevalを使用する必要があります。何かのようなもの

A = [];
for k=1:K
    eval(sprintf('A{k} = [A, Mean_rpm%d];',k));
end

同様のすべての変数の名前を取得して、それらを組み合わせることができます。

varlist = who('Mean_rpm*');
A = cell(1,numel(varlist);
for k = 1:numel(varlist)
    eval('A{k} = varlist{k};');
end

これは、CELL2FUNを使用したループのないものです。

A=cellfun(@(x)evalin('base',x),varlist,'UniformOutput',0);
于 2013-03-26T16:36:07.197 に答える
0

そもそも、これらの個々の変数をすべて使用することは避けてください。これを支援するために、配列、セル配列、構造体配列などのデータ型が存在します。各変数を名前に関連付ける場合は、構造体配列を使用できます。以下に例を示します。Mean_rpm1現在行っているように値を割り当てる代わりに、値を割り当ててmeanStruct.Mean_rpm1構造全体を保存します。

% as you generate values for each variable, assign them to the
% appropriate field.
meanStruct.Mean_rpm1 = [10:10];
meanStruct.Mean_rpm2 = [12:15];
meanStruct.Mean_rpm3 = [13:20];
meanStruct.Mean_rpm4 = [14];
meanStruct.Mean_rpm5 = [15:18];
meanStruct.Mean_rpm6 = [16:20];
meanStruct.Mean_rpm7 = [17:22];
meanStruct.Mean_rpm8 = [18:22];
meanStruct.Mean_rpm9 = [19:22];
meanStruct.Mean_rpm10 = [20:22];
meanStruct.Mean_rpm11 = [21:22];
meanStruct.Mean_rpm12 = [22:23];

% save the structure array
save('meanValues.mat','meanStruct')


% load and access the structure array
clear all
load('meanValues.mat')
temp = meanStruct.Mean_rpm3
于 2013-03-26T16:44:02.377 に答える