n5321 | 2025年3月30日 20:02

Tags: Matlab



%% Import data from spreadsheet   导入数据,设定基准
[~, ~, raw] = xlsread('D:\experiment\baseline.xls','数据','A2:G244');
data = reshape([raw{:}],size(raw));
% Allocate imported array to column variable names
Amps = data(:,1);
Volts = data(:,2);
Speed = data(:,3);
Torque = data(:,4);
WattsOUT = data(:,5);
Efficiency = data(:,6);
PF = data(:,7);
%计算电流的实测曲线
% fa=polyfit(Speed,Amps,3)
% Ia=polyval(fa,Speed)
% hold on
% plot(Speed,Ia)

%计算扭力的实测曲线
ft=polyfit(Speed,Torque,4)
Tn=polyval(ft,Speed)
figure
plot(Speed,Torque)
hold on
plot(Speed,Tn)
%%  建立服务器,调用ansoft,进行计算
iMaxwell=actxserver('AnsoftMaxwell.MaxwellScriptInterface');
%获取桌面操作
Desktop=iMaxwell.GetAppDesktop(); % remove set from the object definitions
%打开程序
Desktop.RestoreWindow()
%打开项目
Desktop.OpenProject('D:/experiment/58C1054.mxwl')
Project =Desktop.SetActiveProject('58C1054')
Design = Project.SetActiveDesign('test2');
%当前项目
Editor = Design.SetActiveEditor('Machine')
%打开编辑器
Module = Design.GetModule('ReportSetup')


%%   this works
D =zeros(1,100)   %设定矢量D存储Rmse数据
for a=1:3:25
    %fw表达式成功
    fw=[num2str(a) 'W']
    %成功
    invoke(Editor,'ChangeProperty',...
    {'NAME:ALLTabs',{'NAME:Machine',{'NAME:PropServers',...
  'Machine'}, {'NAME:ChangedProps', {'NAME:Frictional Loss','Value:=',fw}}}})
%计算所有项目
    invoke(Project,'AnalyzeAll')
%关闭项目
% Desktop.CloseProject( '58C1054')
%%数据导出 成功
    %设定文件导出地址
    path=['D:/experiment/',num2str(a) ,'.csv']
    %导出文件
    Module.ExportUniformPointsToFile( 'Torque', path, ...
    '0rpm', '1500rpm', '10rpm')
filename = path;
delimiter = ',';
startRow = 2;
formatSpec = '%f%f%[^\n\r]';
fileID = fopen(filename,'r');
dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'HeaderLines' ,startRow-1, 'ReturnOnError', false);
Caculate_Speed = dataArray{:, 1};
Caculate_Torque = dataArray{:, 2};
%计算数据对比baseline
figure
plot(Caculate_Speed,Caculate_Torque,Speed,Tn,'x')
hold on
Rmse=sqrt(mean(Caculate_Torque-polyval(ft,Caculate_Speed).^2))
D(a)=Rmse
end
%%