Matlab从csv文件中获取值

时间:2013-05-30 21:56:34

标签: matlab

我有一个我会使用的excel文件数据。 我希望来自B列和C列的两个输入值从A列获取名称。 示例:来自这两个值

​​var1 = 12.90050072 
var2 = 55.95981118

I would get "ALIOTH"

此处数据

A             B        C
ALGOL   3.13614789  40.95564610
ALIOTH  12.90050072 55.95981118
ALKAID  13.79233003 49.31324779

我可以加载csv文件,但无法浏览数据。

function [name] = getNameObject(ad,dec)
  fileID = fopen('bdd.csv');
  C = textscan(fileID, '%s %f %f','Delimiter',';');
  fclose(fileID);

请建议一些功能和示例代码来执行此操作

2 个答案:

答案 0 :(得分:2)

由于您需要比较浮点值,因此直接数字比较在很多时候都不起作用。在这里,我将利用字符串比较来实现您的需求:

clear;

fid = fopen('test.csv');
C = textscan(fid, '%s %s %s', 'Delimiter', ';');
fclose(fid);

val1 = input('Enter the first input: ', 's');
val2 = input('Enter the second input: ', 's');

if(find(ismember(C{2},val1)) == find(ismember(C{3},val2)))
    output = C{1}{find(ismember(C{2},val1))}
else
    disp('No match found!');
end

现在结果如下:

>> test
Enter the first input: 1.03
Enter the second input: 4.12
No match found!
>> test
Enter the first input: 12.90050072
Enter the second input: 55.95981118

output =

ALIOTH

在这里,我假设,根据我可以从你的代码中推断出,分隔符是一个分号。因此,我的输入数据是:

A;B;C
ALGOL;3.13614789;40.95564610
ALIOTH;12.90050072;55.95981118
ALKAID;13.79233003;49.31324779

答案 1 :(得分:1)

我使用importdata来处理csv-s

aa.csv:

A,             B,        C
ALGOL,   3.13614789,  40.95564610
ALIOTH,  12.90050072, 55.95981118
ALKAID,  13.79233003, 49.31324779

IMPORTDATA( 'aa.csv')数据:

3.1361   40.9556
12.9005   55.9598
13.7923   49.3132

IMPORTDATA( 'aa.csv')的TextData:

'A'         '             B'    '        C'
'ALGOL'     ''                  ''         
'ALIOTH'    ''                  ''         
'ALKAID'    ''                  ''