matlab日线转周线的做法,matlab批量转换日线数据

% deal data from specified data file

clear ;

clc

file1=dir('D:\new_yhzq_v21\vipdoc\sz\lday\sz00*.day');

a1=struct2cell(file1);

z1=a1(1,:)';

file2=dir('D:\new_yhzq_v21\vipdoc\sz\lday\sz300*.day');

a2=struct2cell(file2);

z2=a2(1,:)';

NameString=[z1;z2];

len=length(NameString);

for i=1:len

data_fname=strcat('D:\new_yhzq_v21\vipdoc\sz\lday\',NameString(i)) ; % 这里是文件名

%jump_distance = 2048 ;    % 这里是跳过的字节数

% 打开方式为二进制打开,其实'r'就行,matlab是默认二进制形式打开文件的

data_fname=data_fname{1};

file_id = fopen(data_fname, 'rb');

% 从文件开始跳过jump_distance个字节

%fseek(file_id, jump_distance, 'bof');

% 先手工构造一个1x10大小的矩阵

raw_data = [1:8];

while feof(file_id) == 0

% 这就是大名顶顶的fread了,数据类型是int32,每次读入10个数

% raw_array每次都是10x1的矩阵,ele_count为读入的数的个数(正常情况下应为512)

[row_array, ele_count] = fread(file_id, 8, 'int32') ;

if ele_count < 8 % elecount < 8代表数据不够,已经到了文件的结尾

break ;

else

% 将10x1的row_array转置一下,变为1x512的矩阵

row_array = row_array'  ;

% 然后,将row_array追加到raw_data中

raw_data = [raw_data; row_array] ;

end

end

% get off the first line [1:1:10]

% 这里就是要把raw_data的第一行数据手工构造的那行数据给去掉,剩下的就都是文件中的数据了

raw_data(1,:)=[] ;

%创建stockdatainfo。.mat

stockdatainfo(:,1) = raw_data(:,1);                 %时间

stockdatainfo(:,2:5) = raw_data(:,2:5)/100;        %开盘价,最高价,最低价,收盘价

stockdatainfo(:,6) = raw_data(:,7);                 %成交量

%stockdatainfo(:,7) = round(raw_data(:,6)/10); %成交额

savestring=strcat('D:\用户目录\Documents\MATLAB\sz\',NameString(i));

name=savestring{1}(1:length(savestring{1})-4);

save (name,'stockdatainfo');

% 关闭文件

fclose(file_id);

% delete other usless vars

% 这里是把用过的变量都删除掉

clear data_fname file_id fid ele_count i m n raw_data row_array ans stockdatainfo;

end

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB中,您可以使用Matlab自带的netcdf库来读取和处理NetCDF数据。要将批量的nc数据转换为栅格格式,您可以按照以下步骤操作: 1. 获取数据:首先,确保您已经下载或获取了批量的nc数据文件。 2. 批量处理脚本:编写一个MATLAB脚本来批量处理nc数据转换为栅格格式。以下是一个示例脚本,可以帮助您开始: ```matlab % 设置输入和输出文件夹路径 input_folder = '输入文件夹路径'; output_folder = '输出文件夹路径'; % 获取输入文件夹中的所有nc文件 files = dir(fullfile(input_folder, '*.nc')); % 循环处理每个文件 for i = 1:numel(files) % 读取NetCDF文件 filename = fullfile(input_folder, files(i).name); data = ncread(filename, '变量名称'); % 替换为实际的变量名称 % 进行栅格处理操作,例如计算统计指标、重采样等等 % 这里只是一个示例,您可以根据自己的需求进行修改 processed_data = mean(data, 'all'); % 计算平均值 % 创建输出文件名 [~, name, ~] = fileparts(files(i).name); output_file = fullfile(output_folder, [name, '.tif']); % 将处理结果保存为栅格文件 geotiffwrite(output_file, processed_data, raster_reference, 'CoordRefSysCode', 'EPSG:4326'); % 替换raster_reference为实际的空间参考信息 disp(['完成文件:', files(i).name]); end disp('批量处理完成!'); ``` 请注意,上述示例脚本中的变量名称和空间参考信息需要根据您的实际数据进行替换。您可以使用`ncdisp`函数来查看NetCDF文件中的变量名称和其他元数据信息,以确定正确的替换值。 3. 运行脚本:将脚本保存为一个.m文件,并在MATLAB命令窗口中运行该文件,确保在运行脚本之前将输入文件夹路径和输出文件夹路径替换为实际路径。 上述示例仅演示了如何批量处理nc数据,并计算每个文件中的统计指标(平均值),然后将结果保存为栅格文件。您可以根据具体需求进行修改和扩展。 希望这对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值