如何导入MATLAB在Mac Excel数据

77(30天)
AngeloCSM
AngeloCSM 2020年4月29日
评论道: AngeloCSM2020年4月29日
我需要导入Excel表主要包含日期和金融工具的价格。我读过xlsread不工作在Mac和我想知道如果有人可以解释为什么,如果有个队伍工作。
我曾经尝试过readtable但它也存储在数字和日期我错误当试图将这些转化为数组。我也试着将excel转化为CSV但这似乎工作。我也会错误当试图应用MATLAB函数yearfrac和datenum手动导入数据。
有什么方法可以绕过手动导入或安装windows虚拟机?
谢谢你!
2的评论
AngeloCSM
AngeloCSM 2020年4月29日
这是Excel文件我正在和导入的类型我应该完成。
函数(日期、利率)= readExcelData(文件名,formatData)
%从excel读取数据
%它读取/问价格和相关日期
% %单位所有输入率
%
%的输入:
%文件名:excel文件名称,数据存储
% formatData:数据格式在Excel中
%
%输出:
%日期:结构与settlementDate、deposDates futuresDates swapDates
%的利率:struct deposRates、futuresRates swapRates
% %日期从Excel
%结算日期
[~,结算]= xlsread(文件名,1,“E8”);
%日期转换
日期。解决= datenum(结算、formatData);
%相对于沉积
[~,date_depositi] = xlsread(文件名,1,“这里:D18”);
dates.depos = datenum (date_depositi formatData);
%日期相对于期货:calc开始和结束
[~,date_futures_read] = xlsread(文件名,1,“12:R20”);
numberFutures =大小(date_futures_read, 1);
dates.futures = 1 (numberFutures, 2);
dates.futures (: 1) = datenum (date_futures_read (: 1), formatData);
dates.futures (:, 2) = datenum (date_futures_read (:, 2), formatData);
%日期相对于互换:到期日期
[~,date_swaps] = xlsread(文件名,1,“D39: D88”);
日期。掉期= datenum (date_swaps formatData);
% %利率从Excel(报价&问)
%沉积
tassi_depositi = xlsread(文件名,1,“E11: F18”);
rates.depos = tassi_depositi / 100;
%期货
tassi_futures = xlsread(文件名,1,“E28: F36”);
%的利率从期货
tassi_futures = 100 - tassi_futures;
利率。期货= tassi_futures / 100;
%互换
tassi_swaps = xlsread(文件名,1,“E39: F88”);
利率。掉期= tassi_swaps / 100;
结束

登录置评。

接受的答案

Guillaume
Guillaume 2020年4月29日
“我读过xlsread不工作在Mac和我想知道如果有人可以解释为什么如果有个队伍工作。”
这并不完全正确。 xlsread 如果使用Mac工作 “基本” 选项(默认情况下mac电脑上我相信)。“基本”选项 xlsread 直接解析excel文件而不是与excel中提取数据。然而,随着足够复杂的excel文件, xlsread 可能无法正确解析该文件。
即使你可以使用 xlsread mac,你还是最好使用 readtable , readmatrix ,有限公司他们改进 xlsread 。默认情况下在R2020a, readtable 解析Mac excel文件直接和工作。就像 xlsread 这个过程,可能会有实例失败但总的来说这是不应该的。
如果你想知道事实真相, xlsread 在基本模式 readtable “UseExcel” 是真的,开始Excel,问Excel打开文件,然后问Excel电子表格的内容读。这可以保证正确读取这个文件,因为它与excel的excel这样做但是沟通只能在Windows上,因为它使用的机制(称为COM或ActiveX)只能在Windows上。这需要苹果和微软合作实现mac电脑,我不会屏住呼吸……
“我已经试过readtable但它存储的日期数字”
不应该这样,但如果你应该能够使用数字转换回日期 “ConvertFrom”、“excel” 选择 datetime
“这给了我错误当试图将这些转化为数组”
你做错了什么。没有细节,你在做什么没有错误消息的文本,很难帮助你。
“我也试着将excel转化为CSV但这似乎工作。我也会错误当试图应用MATLAB函数yearfrac和datenum手动导入数据”。
再一次,没有足够的细节你在做什么或者错误。
“有什么办法可以绕开手动导入或安装windows虚拟机?”
使用 readtable , readmatrix ,或 readcell 。在你的情况中,我使用 readcell 阅读整个表格然后读取所需的数据单元阵列。注意你的电子表格的设计很适合人类的读者,但真的不适合处理程序。
allcontent = readcell(文件名);%应该工作相同的Mac和windows
日期。解决= allcontent {8, 5};%应该已经一个datetime比datenum要好得多。别转换为datenum !
dates.depos = cell2mat (allcontent (11:18 4));%已经datetime
日期。期货= cell2mat (allcontent (12:20, 17:18));%又没有更多的事情要做
%等。剩下的文件。使用cell2mat提取单元阵列的相关部分
5个评论
AngeloCSM
AngeloCSM 2020年4月29日
感谢你的一切!:)

登录置评。

更多的答案(0)

下载188bet金宝搏


释放

R2020a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!