2021.2.15的matlab Code
n5321 | 2025年3月30日 20:02
%% 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
%%