필터 지우기
필터 지우기

I have these warnings in my code. Can anybody help me? Thanks

조회 수: 1 (최근 30일)
ALESSANDRO MALAGOLI
ALESSANDRO MALAGOLI 2022년 10월 19일
댓글: Walter Roberson 2022년 10월 24일
I attached the code and a .txt. Before using the code you have to save the .txt as .DAT since I put it like that on Matlab
Attencion! You need to change comas into points in the .DAT file
  댓글 수: 6
ALESSANDRO MALAGOLI
ALESSANDRO MALAGOLI 2022년 10월 20일
If I put the readmatrix outside the for-loop it works worse...
Walter Roberson
Walter Roberson 2022년 10월 20일
Moving the reading out of the loop does not appear to present any problems for me.
rpms = [1600, 1800, 2000, 2200, 2400, 2600, 2800, 3000];
dz = 0.2; % Diferencia de cotas entre la entrada y la salida = 20 cm
rho = 1e3; % Densidad = 1000 kg/m3
g = 9.8; % Aceleracio´n de la gravedad
D = 0.2; % Longitud caracter´ıstica del impulsor
% Creamos vectores vac´ıos para almacenar los datos:
vecq = []; vech = []; vecwu = []; vecwt = []; veceta = [];
% CAUDAL ALTURA POT UTIL POT EJE RENDIMIENTO
run = readmatrix('https://www.mathworks.com/matlabcentral/answers/uploaded_files/1162238/robainutile.txt',...
'DecimalSeparator',','); %##### MODIFIED TO RUN HERE
% Convertimos de RPM a RAD/S
run(:,1) = run(:,1)*2*pi/60;
% Convertimos de BAR a PASCAL
run(:,2:3) = run(:,2:3)*1e5;
% La columna 4, representa el par en SI => no se toca
% Convertimos de L/MIN a M3/S
run(:,5) = run(:,5)*1e-3/60;
% Definimos un vector 25 caudal con 500 puntos:
q = linspace(0,max(run(:,5)),500);
rundata = run;
for i=length(rpms):-1:1
% Definimos el nombre de los ficheros que hay que leer
run = rundata;
% Ordenamos los datos en orden Q creciente
[aux, ind] = sort(run(:,5));
run = run(ind,:);
% Calculamos la altura manome´trica:
gHm = (run(:,3)-run(:,2))/rho + g*dz;
% Ajuste de gHm con una funcion polinomica de segundo orden
[p,S,mu] = polyfit(run(:,5),gHm,2);
% Interpolamos gHm para valores de caudal q:
[y,delta] = polyval(p,q',S,mu);
% Almacenamos los resultados en un vector vecq y vech
vecq = [vecq ; q']; vech = [vech; y];
% Calculamos la potencia útil:
Wu = rho*run(:,5).*gHm;
% Ajustamos y la interpolamos
[pwu,Swu,muwu] = polyfit(run(:,5),Wu,3);
Wufit=polyval(pwu,q',Swu,muwu);
%Almacenamos en vector
vecwu = [vecwu ; Wufit];
% Calculamos la potencia en el eje
Wt = run(:,1).*run(:,4);
% y la interpolamos
[pwt,Swt,muwt] = polyfit(run(:,5),Wt,1);
Wtfit=polyval(pwt,q',Swt,muwt);
% Almacenamos los resultados en un vector vecwt
vecwt = [vecwt ; Wtfit];
% Calculamos rendimiento
eta = Wu./Wt*100;%rho*q.*y' ./Wtfit'*100;
% Interpolamos rendimiento
[peta,Seta,mueta] = polyfit(run(:,5),eta,2);
etafit=polyval(peta,q',Seta,mueta);
% Almacenamos los resultados en un vector veceta
veceta = [veceta ; etafit];
% Hacemos las curvas dimensionales
figure(1); hold on;
xlabel('Q (m^3/s)');ylabel('gHm (m^2/s^2)');
plot(run(:,5),gHm,'ob'); hold on;
plot(q,y,'r-');
grid on;box on;
figure(2); hold on;
xlabel('Q (m^3/s)');ylabel('Wu (W)');
plot(run(:,5),Wu,'ob'); hold on;
plot(q,Wufit,'r-');
grid on;box on;
figure(3); hold on;
xlabel('Q (m^3/s)');ylabel('Wt (W)');
plot(run(:,5),Wt,'ob'); hold on;
plot(q,Wtfit,'r-');
grid on; box on;
figure(4); hold on;
xlabel('Q (m^3/s)');ylabel('\eta (%)');
plot(run(:,5),eta,'ob'); hold on;
plot(q,etafit,'r-');
xlabel('Q (m^3/s)');ylabel('\eta (%)');
grid on; box on;
end
m = 101;
n = 100;
ejeQ = linspace(0,max(vecq),m);
ejeWu = linspace(0,max(vecwu),n);
ejeWt = linspace(0,max(vecwt),n);
ejeHm = linspace(min(vech),max(vech),n);
[QQ,HH] = meshgrid(ejeQ,ejeHm);
[QQ,WW] = meshgrid(ejeQ,ejeWt);
ETAqh = griddata(vecq,vech,veceta,QQ,HH,'linear');
Warning: Duplicate data points have been detected and removed - corresponding values have been averaged.
ETAqw = griddata(vecq,vecwt,veceta,QQ,WW,'linear');
Warning: Duplicate data points have been detected and removed - corresponding values have been averaged.
indETAqh=isnan(ETAqh);
indETAqw=isnan(ETAqw);
figure;
plot3(vecq,vech/g,veceta,'k.')
hold on
ETAqh2=gridfit(vecq,vech,veceta,ejeQ,ejeHm);
ETAqh2(find(indETAqh==1)) = NaN;
surf(QQ,HH/g,ETAqh2);colormap(jet);colorbar;
camlight right; lighting phong; shading interp;
xlabel('Q (m^3/s)'); ylabel('H_m (m)'); zlabel('\eta (%)');
title('Rendimientos usando GRIDFIT')
box on
figure;
plot3(vecq,vecwt,veceta,'k.')
hold on
ETAqw2=gridfit(vecq,vecwt,veceta,ejeQ,ejeWt);
Warning: Rank deficient, rank = 10099, tol = 2.748815e-09.
ETAqw2(find(indETAqw==1)) = NaN;
surf(QQ,WW,ETAqw2);colormap(jet);colorbar;
camlight right; lighting phong; shading interp;
xlabel('Q (m^3/s)'); ylabel('W_t (W)'); zlabel('\eta (%)');
title('Rendimientos usando GRIDFIT')
box on
figure;
[C,h] = contourf(QQ,HH/g,ETAqh2,[0 5 10 15 20 25 30 32.5 35]);colormap(jet);colorbar;
text_handle = clabel(C,h,'FontSize',14,'Color','k','Rotation',0,'LabelSpacing',500);
Warning: The Rotation property is ignored when a contour handle argument is supplied and label placement is automatic.
Warning: Text handle output is not supported when a contour handle argument is supplied and label placement is automatic.
set(text_handle,'BackgroundColor',[1 1 1])
xlabel('Q (m^3/s)'); ylabel('H_m (m)');
title('Isorendimientos usando GRIDFIT')
figure;
[C,h] = contourf(QQ,WW,ETAqw2,[0 5 10 15 20 25 30 32.5 35]);colormap(jet);colorbar;
Warning: Contour not rendered for constant ZData
text_handle = clabel(C,h,'FontSize',14,'Color','k','Rotation',0,'LabelSpacing',500);
Warning: The Rotation property is ignored when a contour handle argument is supplied and label placement is automatic.
Warning: Text handle output is not supported when a contour handle argument is supplied and label placement is automatic.
set(text_handle,'BackgroundColor',[1 1 1])
xlabel('Q (m^3/s)'); ylabel('W_t (W)');
title('Isorendimientos usando GRIDFIT')

댓글을 달려면 로그인하십시오.

답변 (1개)

Walter Roberson
Walter Roberson 2022년 10월 20일
for i=length(rpms):-1:1
The calculations in your loop do not depend upon i, so you are generating exactly the same data every time through the loop. That is why you are getting duplicates and not getting the output you want.
  댓글 수: 5
Walter Roberson
Walter Roberson 2022년 10월 24일
I am going to assume that gridfit() is Surface Fitting using gridfit from the File Exchange, by @John D'Errico
Walter Roberson
Walter Roberson 2022년 10월 24일
I do not know why you are getting the warning about rank deficient inside of gridfit()
@John D'Errico -- the problem is occuring on
else
% no mask
zgrid = reshape(A\rhs,ny,nx);
after 'gradients'. A is sparse 20700 by 10100 but rank(A) is 10099 -- one column has a problem.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Computational Geometry에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by