溫度補償,matlab 計算


計算908的溫度擬合曲線

%%
close all;
clc;
clear;
%%
str = 'E:\matlab\kc908_temp_data\';%獲取路徑
files = dir(strcat(str,'*.txt'));%掃描當前文件夾下的txt文件
number_files = length(files);%獲取文件數量
%%
list_freq = zeros(number_files);
for i=1:number_files
    freq(i) = str2num(files(i).name(regexp(files(i).name,'\d')));%獲取字符串中的數字,並轉換為數字
end
[B,index]=sort(freq);
%%
N = 6;
a = zeros(number_files,N+1);
fun_name = blanks(number_files);%申請一個字符串數組
%%
for i=1:number_files
    str1 = sprintf('%s%s',str,files(index(i)).name);
    [temp,lev] = textread(str1,'%f,%f');%讀取指定文件
    L = length(temp);
    x = temp;
    if(x(1) - x(end) > 0)
        diff = lev(end);
    else
        diff = lev(1);
    end
    y = lev - diff;
%      y(i,:) = lev;
    a(i,:) = polyfit(x,y,N)%獲取多項式
    
    figure;
    plot(x,y);%畫圖
    freq = str2num(files(index(i)).name(regexp(files(index(i)).name,'\d')));%獲取字符串中的數字,並轉換為數字
    if (freq < 1e3)
        str2 = sprintf('%s%.1f%s','頻率:',freq,'Hz');
    elseif(freq <1e6)
        str2 = sprintf('%s%.4f%s','頻率:',freq/1e3,'kHz');
    elseif(freq < 1e9)
        str2 = sprintf('%s%.7f%s','頻率:',freq/1e6,'MHz');
    else
        str2 = sprintf('%s%.10f%s','頻率:',freq/1e9,'GHz');
    end
    title(str2);
    legend('溫度-幅度');%曲線內容
    xlabel('溫度');
    ylabel('幅度');
end
%%
% zz = (1:number_files);
% xx = x(zz,:);
% yy = y(zz,:);
% figure;
% plot3(xx,yy,zz,'.b');
% grid on;
% figure;
% mesh(zz,xx,yy);
%%
%階數判斷
% for i=1:5
%     y2=polyfit(x,y,i);
%     Y=polyval(y2,x);%計算擬合函數在x處的值。
%     if sum((Y-y).^2)<0.1
%         c=i  
%         break;
%     end
% end

  

% clear;
% clc;
close all;
% a = [  
%   -0.0000    0.0000   -0.0000    0.0002   -0.0383   -0.0294
%     0.0000   -0.0000    0.0000   -0.0000   -0.0355    0.0785
%     0.0000   -0.0000    0.0000    0.0001   -0.0389    0.0752
%     0.0000   -0.0000    0.0000   -0.0004   -0.0280    0.2828
%     0.0000   -0.0000    0.0000   -0.0005    0.0160   -0.0965
%    -0.0000    0.0000    0.0000   -0.0005   -0.0152    0.1324
%    -0.0000    0.0000    0.0000   -0.0030    0.0125   -0.0170];

tempr = 0:1:70;
N = 7;

bb = zeros(N,length(tempr));
for i = 1:N
    
    c = a(i,N-6) .* tempr.^6 +a(i,N-5) .* tempr.^5 + a(i,N-4) .* tempr.^4 + a(i,N-3) .* tempr.^3 ...
        + a(i,N-2) .* tempr.^2 + a(i,N-1) .* tempr.^1 + a(i,N) .* tempr.^0;
    
    figure;
    plot(tempr,c);
end

  

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM