Matlab: Reading in data from an excel spreadsheet as a single integer
10 次查看(过去 30 天)
显示 更早的评论
Louis
2011-12-22
I am reading in data from an excel spreadsheet, but I am unable to use a comparison on what I read in. How can I read in a cell from an excel spreadsheet and compare what I get to a number? I'm pretty sure anything read from a spreadsheet is made into an array Here is the relevant code (edit: I'll give the whole code of what I have; edit2: Minor fixes, but being so new to MatLab, I think I'm not familiar with how to declare a variable):
>> for k = 2:4997
colF = 'F';
colE = 'E';
row = int2str(k);
entryF = strcat(colF, row);
entryE = strcat(colE,row);
millisecond = xlsread('someFile.xlsx', 1, entryE);
[~,message] = xlsread('someFile.xlsx', 1, entryF);
if millisecond == 1
soundMoment = 0;
elseif strcmp(message, 'probe_sound')
soundMoment = millisecond;
end
if soundMoment == 0
xlswrite('someFile.xlsx', 'preprobe', 1, entryF);
elseif millisecond > soundMoment
xlswrite('someFile.xlsx', 'postprobe', 1, entryF);
end
end
25 个评论
Walter Roberson
2011-12-22
Please check your file names: probably you should not have the * in the first one.
You should be using strcmp(message, 'probe_sound') instead of using == to compare the strings.
Aldin
2011-12-22
You say entryE is number an entryF is text than you can in my opinion make this compare:
if entryE = 1
soundMoment = 0;
elseif strcmp(entryF,'probe_sound')
soundMoment = millisecond;
end
Walter Roberson
2011-12-22
EntryE and EntryF are locations in the file, not the entries themselves.
The "=" operator cannot be used in an "if" statement; "==" is the comparison operator.
Aldin
2011-12-22
"good eye" :)
read data in excel and than xlswrtie the same data and than compare
what you want
Louis
2011-12-22
The error I get in MatLAB is:
Error using == , Matrix dimensions must agree.
So I know the problem is with what I read in, the only issue is WHAT the datatype is of millisecond and message. Do I just need to convert message into a string, and millisecond into an integer?
Aldin
2011-12-22
1 is an number you have to convert millisecond to number "str2num"
also for soundMoment
Louis
2011-12-22
I don't follow. Does the ~ in [~,name] stand for something? And name is just what I want my variable to be named?
Louis
2011-12-22
No error with the [~,message] bit, but now it says: Error using str2num (line 33), Requires string or character array input.
Walter Roberson
2011-12-22
In 2009b onward, a ~ on the left-hand side of an assignment means to throw away the corresponding output argument. If you are using a version before 2009b, replace the ~ with any variable name that is not being used.
Aldin
2011-12-22
delete all str2num functions in your code. And what is preprobe and postprobe it is the data to read in file???
Louis
2011-12-22
Oops, preprobe and postprobe are supposed to be strings that I'm writing into that spot in the Excel spreadsheet. I thought in MatLAB that declarations weren't needed.
Louis
2011-12-22
Did another small edit to the code, but I'm assuming to declare soundMoment, int soundMoment should work?
Walter Roberson
2011-12-22
Declarations are not required. The problem is that your conditions do not specify what soundMoment should be set to if neither test is met.
Louis
2011-12-22
I did "else soundMoment = -1;" and now there are no errors. The excel spreadsheet is quite big, so I'll have to wait to see if it came out as intended.
Louis
2011-12-23
It works, except it's never listing anything as preprobe. I get all postprobe right, but preprobe isn't showing.
Aldin
2011-12-23
In MATLAB there is no declaration such as in JAVA we have int, float, double, string...
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Spreadsheets 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!发生错误
由于页面发生更改,无法完成操作。请重新加载页面以查看其更新后的状态。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom(English)
亚太
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)