clc; clear; imgdir1 = 'H:\upscaling\GWRK\result_5.18\'; %%修改为所要处理的数据路径 addpath(genpath(imgdir1)); %% MK趋势分析 filenames = dir([imgdir1 '*.tif']); for i = 1:numel(filenames) data(:,:,i) = single(imread(filenames(i).name)); %% 原始数据 end %% [row,col, N]=size(data); timeslice = N; A=xlsread('E:\data\天峻土壤水分传感器网络每半小时土壤水分观测数据集(2019-2021)\57个站的5cm日均数据 - 副本.xlsx'); column1 = A(:, 1); array1D = column1'; beg = 2019; %%数据起始年份 last = 2021; %%数据结束年份 NA = data(1,1,1); %MK_para=zeros(row,col,2); K=zeros(row,col)*NaN; Z=zeros(row,col)*NaN; X=zeros(1,timeslice)*NaN; t=array1D;%数据时间长度 需要改 Alpha=0.05; %%置信区间 for i=1:row i for j=1:col if ismember(data(1,1,1),data(i,j,:)) % 当某位置的时间序列里有无效的数据时, assign NaN to Z and K Z(i,j)=-9999; K(i,j)=-9999; else MKResult=MKTrend(data(i,j,:),Alpha); X=squeeze(data(i,j,:)); p=polyfit(t',X,1); K(i,j)=p(1); %% 变化量 Z(i,j)=MKResult(1); %% 显著性 end end end %% ref_data=imread('H:\upscaling\GWRK\result\2019246.tif'); [W, R] = geotiffread('H:\upscaling\GWRK\result\2019246.tif'); info = geotiffinfo('H:\upscaling\GWRK\result\2019246.tif'); % [~, R0] = readgeoraster('H:\upscaling\GWRK\result\2019246.tif'); %%输入一幅标准的栅格数据来获取属性信息 % info = geotiffinfo('H:\upscaling\GWRK\result\2019246.tif'); %%输入一幅标准的栅格数据来获取属性信息 geoTags = info.GeoTIFFTags.GeoKeyDirectoryTag; outPath = 'H:\upscaling\MK\'; %%输出路径 outName1 = [outPath, 'GWRK.tif']; %%输出数据名称 geotiffwrite(outName1,Z,R,'GeoKeyDirectoryTag', info.GeoTIFFTags.GeoKeyDirectoryTag); %%若输出Slope值,将本行中的Z改为K即可
时间: 2024-04-07 12:29:42 浏览: 57
您的代码看起来没有明显的错误,但是在运行之前需要注意以下几个问题:
1. 您需要确保您的 MATLAB 工作目录设置正确,以便程序能够正确读取和写入文件。在这个代码中,您需要确保程序能够正确读取您的图像和 Excel 文件。
2. 您需要确保在运行代码之前已经安装了适当的工具箱,例如 Mapping Toolbox,以便程序能够正确读取和写入地理数据。如果您没有安装所需的工具箱,程序可能会出现错误。
3. 在运行程序之前,您需要修改以下变量的值,以便它们与您的数据和路径匹配:
- imgdir1:图像文件夹的路径。
- A:Excel 文件的路径。
- beg 和 last:数据的起始和结束年份。
- Alpha:置信区间。
希望这些提示对您有所帮助!
相关问题
clear all; close all; clc;tic 5%8866% Settings $8868% its_option =2; 966 0:??????,1:??????,2:?????? hoise_option=1; 8% 0:??????,1:?????? =4;NT=2; SNRdBs=[0:2:20];sq05=sqrt(0.5); obe_target =500; BER_target =1e-3; taw_bit_len= 2592-6; nterleaving_num = 72; deinterleaving_num = 72; _frame = 1e8; or i_SNR=1:length(SNRdBs) sig_power=NI;SNRdB=SNRdBs(i_SNR); sigma2=sig_power*10°(-SNRdB/10)*noise_option;sigmal=sqrt(sigma2/2); nobe = 0; Viterbi_init for i_frame=1:1:N_frame I %%88688868896%% ??????866988689686836% switch (bits_option) case (0】, bits=zeros(1,raw_bit_len); case (11, bits=ones(1,raw_bit_len); casef2), bits=randint(1,raw_bit_len); case (2), bits=randi(1,1,raw_bit_len)-1; end 686%6% ?????88%6% encoding_bits= convolution_encoder(bits); 6%%8%% ????? 8686% interleaved=[]; for i=l:interleaving_mum interleaved=[interleavedencoding_bits([i:interleaving_mum:end])];for tx_time-l:648 tx_bits=interleaved(1:8); interleaved(1:8)=[J; ??7 QAM16_symbol=QAM16_mod(tx_bits, 2); ?????69686666366685669 x(1,1) =QAM16_symbol(1);x(2,h)=QAM16_symbol(2); 90969696%????????????? 636585863666666 if rem(tx_time-1,81)==0 H = sq05*(randn(2,2)+j*randn(2,2)); end y =H*x; 66986896%88868% ????? 6688688%%88%% noise = sqrt(sigma2/2)*(randn(2,1)+j*randn(2,1)); if noise_option==1, y = y + noise;end %8%8%88%%8%8% ??????668888688888%% W=inv(H'*H+sigma2*diag (ones(1,2)))*H'; K_tilde =W*y; %%%%88%%8%8% ??????668888%58888%% x_hat = QAM16_slicer(X_tilde, 2); temp_bit=[temp_bit QAM16_denapper(X_hat, 2)]; end %%%8%%%%?????88%8886% deinterleaved=[]; for i=1:deinterleaving_rum deinterleaved=[deinterleaved temp_bit([i:deinterleaving_mum:end])];end %%%86%%%?22220%%%866% received_bit=Viterbi_decode(deinterleaved) 600%%22222 5%0%% for EC_dummy=1:1:raw_bit_len, A bit(BC dumnv) nahesnobe+1:endif nobe>=nobe_target, break; end end if (nobe>=nobe_target) break; end end %8%888888%%%%save BER data & Display 8%88%8888%88%BER(i_SNR)=nobe/((i_frame-1)*raw_bit_len+EC_dummy);fprintf(’t%dt\t%1.4f\n', SNRdB,BER(i_SNR)); if BER(i_SMR)<BER_target, break; end end详细注释这段matlab代码
这段MATLAB代码实现了一个通信系统的模拟。首先设置了一些参数,包括使用的编码方式、噪声选项、帧数、信噪比等。然后进入一个主循环,循环中对于每一帧数据,进行编码、交织、调制、信道传输、解调、反交织、译码等操作,并计算误比特率(BER)。如果达到预设的误比特率目标或帧数目标,则退出循环。最后输出信噪比和误比特率,并保存数据。注释中对于每个操作都有详细的说明。
clear,clc %注释1:数据准备 X=xlsread('附件一指标','指标','B2:K124'); X1=xlsread('附件二指标','指标','B2:J303'); train_x = X(:,1:9); %自变量特征数据,分类已知 train_y = X(:,10); %因变量,一列,只有0和1 pre_x = X1(:,1:9); %自变量特征数据,分类未知,用于预测 %注释2:核心代码 a =glmfit(train_x,train_y,'binomial', 'link', 'logit'); %得到系数矩阵 logit_fit = glmval(a,pre_x, 'logit'); %得出概率,大于0.5分到逻辑1,小于0.5分到逻辑0 %注释3:结果整理 pre_y = zeros(size(logit_fit,1),1); %分类结果 for i=1:size(logit_fit,1) if(logit_fit(i,1)<=0.5) pre_y(i,1)=0; else pre_y(i,1)=1; end end
这段代码是用于进行二分类的逻辑回归预测。其中,前面注释1是数据准备部分,包括读取训练数据和预测数据,以及将训练数据分成特征数据和标签数据两部分;注释2是核心代码部分,使用glmfit函数进行逻辑回归模型的训练,并使用glmval函数进行预测;注释3是结果整理部分,将预测结果从概率值转换为0/1分类结果。
阅读全文