0

問題

数値と変数・記号のデータ型が混在するCSVファイルをインポートしたい。インポート部分については、混合データ型の CSV ファイルのインポート で既に説明しました。

説明

ここの CSV ファイルには 2x2 の数式しか含まれていません (ただし、一般的には 64x64 で、1'000'000 回評価します)。私が直面していた問題は、細胞の評価です。これは同じ方法ではできません。

matlabコードは次のようなものです

% Parameter initialization
vector1 = ones(1e6);
a=1;
b=2;
c=3;
d=4;

% Formula calculation
vector2(1)=import('input000001.csv');

私の最小限の入力ファイルには、次のようなinput000001.csv式が含まれています。

a*vector1(1),2*vector1(1)/b
c+vector1(1),3*vector1(1)^d
4

2 に答える 2

1

これを試して

[a b c d] = deal(1,2,3,4);

data = strcat(importdata('input.csv', sprintf('\n')), ';');
Matrix = eval(['[' data{:} '[]]']);

編集: スローダウンを避けるためevalに、文字列を別の m-file に書き込んで、代わりにループ内で呼び出すことができます。このようなもの:

[a b c d] = deal(1,2,3,4);

matDef = regexprep(fileread('input.csv'), {'(\r\n|\r|\n)' ';^'}, {';' ''});
f = fopen('inputMatrix.m', 'w');
fwrite(f, ['Matrix = [' matDef '];'])
fclose(f);
rehash

for k=1:100000,
    inputMatrix
end

rehash新しく作成さinputMatrixれた関数を既知の関数のリストに追加するように matlab に依頼する必要があります。

于 2013-06-26T21:58:15.297 に答える
0

いくつかのヒントの後、次の解決策にたどり着きました。

%% Initialization
a=1;
b=2;
c=3;
d=4;

%% Procedure for input and evaluation
Temp = cell(read_mixed_csv('input.csv',','));
[imax,jmax]=size(Temp);
Matrix = zeros(imax,jmax);
for i = (1:imax)
    for j = (1:jmax)
        Matrix(i,j) = eval(Temp{i,j});
    end
end

ここで、混合データ型のインポート CSV ファイルread_mixed_csv('input.csv',',')からのものです。

私はより良い答えを待っています!

于 2013-06-26T19:03:19.637 に答える