Category: Matlab
Category Archives: Matlab
Load flow doesn’t run properly, the results in all buses are 0
Hi everyone,
I am triying to obtain the load flow buses results in the load flow analyzer table but it only appears "0". Moreover, it sends an error message telling that there is no swing bus but I have a 3 phase programmable voltage source in my model. I attach an image with my simulation model.
Thank you!Hi everyone,
I am triying to obtain the load flow buses results in the load flow analyzer table but it only appears "0". Moreover, it sends an error message telling that there is no swing bus but I have a 3 phase programmable voltage source in my model. I attach an image with my simulation model.
Thank you! Hi everyone,
I am triying to obtain the load flow buses results in the load flow analyzer table but it only appears "0". Moreover, it sends an error message telling that there is no swing bus but I have a 3 phase programmable voltage source in my model. I attach an image with my simulation model.
Thank you! load flow MATLAB Answers — New Questions
plot(skin friction)
skinfriction()
function skinfriction
Nt=0.5; Nb=0.5; Le=2; Pr=1; alpha=1.5; s=1; A=3;
%% solution in structure form
%First solution
sol = bvpinit(linspace(0,6,10), [0 0 0 0 0 0 0]);
sol1 = bvp4c(@bvpexam2, @bcexam2, sol);
x1 = sol1.x;
y1 = sol1.y;
% Second solution
opts = bvpset(‘stats’,’off’,’RelTol’,1e-10);
sol = bvpinit(linspace(0,5,10), [-1 0 0 0 0 0 0]);
sol2 = bvp4c(@bvpexam2, @bcexam2_dual, sol,opts);
x2 = sol2.x;
y2 = sol2.y;
% Plot both solutions
plot(x1,y1(3,:),’-‘); hold on
plot(x2,y2(3,:),’–‘);
xlabel(‘eta’)
ylabel(‘f`(eta)’)
result1 = A^(-1/2)*y1(3,1)
result2 = A^(-1/2)*y2(3,1)
%%residual of bcs
function res = bcexam2(y0, yinf)
res= [y0(1)-s; y0(2)-alpha; y0(4)-1; y0(6)-1; yinf(2); yinf(4);yinf(6)];
end
function res = bcexam2_dual(y0, yinf)
res= [y0(1)-s; y0(2)-alpha; y0(4)-1; y0(6)-1; yinf(2); yinf(4);yinf(6)];
end
%% first order odes
function ysol = bvpexam2(x,y)
yy1 = -(A*y(1)*y(3)-A*(y(2))^2)-y(2)-(x/2)*y(3);
yy2 = -Pr*(A*y(1)*y(5)+(x/2)*y(5)+Nb*y(5)*y(7)+Nt*(y(5))^2);
yy3 = (-Le*(A*(y(1)*y(7)+(x/2)*y(7)))-(Nt/Nb)*( -Pr*(A*y(1)*y(5)+Nb*y(5)*y(7)+Nt*(y(5))^2)));
ysol = [y(2); y(3); yy1;y(5);yy2;y(7);yy3];
end
end
please help to plot this graph using the above codeskinfriction()
function skinfriction
Nt=0.5; Nb=0.5; Le=2; Pr=1; alpha=1.5; s=1; A=3;
%% solution in structure form
%First solution
sol = bvpinit(linspace(0,6,10), [0 0 0 0 0 0 0]);
sol1 = bvp4c(@bvpexam2, @bcexam2, sol);
x1 = sol1.x;
y1 = sol1.y;
% Second solution
opts = bvpset(‘stats’,’off’,’RelTol’,1e-10);
sol = bvpinit(linspace(0,5,10), [-1 0 0 0 0 0 0]);
sol2 = bvp4c(@bvpexam2, @bcexam2_dual, sol,opts);
x2 = sol2.x;
y2 = sol2.y;
% Plot both solutions
plot(x1,y1(3,:),’-‘); hold on
plot(x2,y2(3,:),’–‘);
xlabel(‘eta’)
ylabel(‘f`(eta)’)
result1 = A^(-1/2)*y1(3,1)
result2 = A^(-1/2)*y2(3,1)
%%residual of bcs
function res = bcexam2(y0, yinf)
res= [y0(1)-s; y0(2)-alpha; y0(4)-1; y0(6)-1; yinf(2); yinf(4);yinf(6)];
end
function res = bcexam2_dual(y0, yinf)
res= [y0(1)-s; y0(2)-alpha; y0(4)-1; y0(6)-1; yinf(2); yinf(4);yinf(6)];
end
%% first order odes
function ysol = bvpexam2(x,y)
yy1 = -(A*y(1)*y(3)-A*(y(2))^2)-y(2)-(x/2)*y(3);
yy2 = -Pr*(A*y(1)*y(5)+(x/2)*y(5)+Nb*y(5)*y(7)+Nt*(y(5))^2);
yy3 = (-Le*(A*(y(1)*y(7)+(x/2)*y(7)))-(Nt/Nb)*( -Pr*(A*y(1)*y(5)+Nb*y(5)*y(7)+Nt*(y(5))^2)));
ysol = [y(2); y(3); yy1;y(5);yy2;y(7);yy3];
end
end
please help to plot this graph using the above code skinfriction()
function skinfriction
Nt=0.5; Nb=0.5; Le=2; Pr=1; alpha=1.5; s=1; A=3;
%% solution in structure form
%First solution
sol = bvpinit(linspace(0,6,10), [0 0 0 0 0 0 0]);
sol1 = bvp4c(@bvpexam2, @bcexam2, sol);
x1 = sol1.x;
y1 = sol1.y;
% Second solution
opts = bvpset(‘stats’,’off’,’RelTol’,1e-10);
sol = bvpinit(linspace(0,5,10), [-1 0 0 0 0 0 0]);
sol2 = bvp4c(@bvpexam2, @bcexam2_dual, sol,opts);
x2 = sol2.x;
y2 = sol2.y;
% Plot both solutions
plot(x1,y1(3,:),’-‘); hold on
plot(x2,y2(3,:),’–‘);
xlabel(‘eta’)
ylabel(‘f`(eta)’)
result1 = A^(-1/2)*y1(3,1)
result2 = A^(-1/2)*y2(3,1)
%%residual of bcs
function res = bcexam2(y0, yinf)
res= [y0(1)-s; y0(2)-alpha; y0(4)-1; y0(6)-1; yinf(2); yinf(4);yinf(6)];
end
function res = bcexam2_dual(y0, yinf)
res= [y0(1)-s; y0(2)-alpha; y0(4)-1; y0(6)-1; yinf(2); yinf(4);yinf(6)];
end
%% first order odes
function ysol = bvpexam2(x,y)
yy1 = -(A*y(1)*y(3)-A*(y(2))^2)-y(2)-(x/2)*y(3);
yy2 = -Pr*(A*y(1)*y(5)+(x/2)*y(5)+Nb*y(5)*y(7)+Nt*(y(5))^2);
yy3 = (-Le*(A*(y(1)*y(7)+(x/2)*y(7)))-(Nt/Nb)*( -Pr*(A*y(1)*y(5)+Nb*y(5)*y(7)+Nt*(y(5))^2)));
ysol = [y(2); y(3); yy1;y(5);yy2;y(7);yy3];
end
end
please help to plot this graph using the above code matlab MATLAB Answers — New Questions
Who explain me this code ?
% Section 1 : Chargement des noms de fichiers et dates
filenames = dir; % Récupère la liste des fichiers dans le répertoire courant
clear files dates % Efface les variables ‘files’ et ‘dates’ si elles existent
for i = 3:size(filenames, 1) % Boucle à partir du troisième élément pour ignorer ‘.’ et ‘..’
files{i-2} = filenames(i).name; % Stocke le nom du fichier dans ‘files’
dates{i-2} = filenames(i).date; % Stocke la date du fichier dans ‘dates’
end
% Section 2 : Chargement des images
clear I % Efface la variable ‘I’ si elle existe
ii = 1; % Initialise l’index pour les images chargées
for i = 1:size(files, 2) % Boucle sur tous les fichiers
try
I{ii} = imread(files{i}); % Tente de lire l’image et la stocke dans ‘I’
ii = ii + 1; % Incrémente l’index
catch
i % Affiche l’index de l’image qui ne peut pas être lue
end
end
% Section 3 : Extraction des visages
for i = 1:29 % Boucle sur les 29 premières images
Face(:, :, i) = extractFace(I{i}); % Extrait le visage de l’image et le stocke dans ‘Face’
end
for i = 1:29 % Boucle pour afficher les visages extraits
figure
image(Face(:, :, i)); colormap(gray); % Affiche le visage en niveaux de gris
end
% Section 4 : Conversion des images en vecteurs
clear X % Efface la variable ‘X’ si elle existe
for i = 1:29 % Boucle sur les 29 visages extraits
X(:, i) = reshape(Face(:, :, i), [10000 1]); % Convertit chaque visage en un vecteur de 10000 éléments
end
imagesc(X) % Affiche la matrice ‘X’ sous forme d’image
% Section 5 : Calcul du visage moyen
averageFace = mean(X, 2); % Calcule le visage moyen en prenant la moyenne de chaque ligne de ‘X’
imagesc(reshape(averageFace, [100 100])); colormap(gray); % Affiche le visage moyen
% Section 6 : Soustraction du visage moyen
A = double(X) – averageFace; % Soustrait le visage moyen de chaque colonne de ‘X’
% Section 7 : Décomposition en valeurs singulières (SVD)
[U, S, D] = svds(A, 15); % Effectue une SVD sur ‘A’ pour obtenir les 15 valeurs singulières et vecteurs principaux
% Section 8 : Affichage des valeurs singulières
diag(S) % Affiche les valeurs singulières sous forme de vecteur diagonal
% Section 9 : Affichage des Eigenfaces
for i = 1:9 % Boucle pour afficher les 9 premiers eigenfaces
figure
imagesc(reshape(U(:, i), [100 100])); % Affiche chaque eigenface
colormap(gray);
end
% Section 10 : Reconnaissance de visage
RegFace = X(:, 9); % Sélectionne un visage de référence dans ‘X’
imagesc(reshape(RegFace, [100 100])); colormap(gray); axis image; % Affiche le visage de référence
LFace = U’ * (double(RegFace) – averageFace); % Projette le visage de référence dans l’espace des visages
HFace = U * LFace + averageFace; % Reconstitue le visage à partir de l’espace des visages
imagesc(reshape(HFace, [100 100])); colormap(gray); axis image; % Affiche le visage reconstitué
% Section 11 : Reconnaissance d’un visage inconnu
I = imread("18-1.jpg"); % Charge une nouvelle image
UnknownCrop = extractFace(I); % Extrait le visage de l’image
imagesc(UnknownCrop) % Affiche le visage extrait
RegFace = reshape(UnknownCrop, [10000 1]); % Convertit le visage extrait en vecteur
LFace = U’ * (double(RegFace) – averageFace); % Projette le visage extrait dans l’espace des visages
HFace = U * LFace + averageFace; % Reconstitue le visage extrait
imagesc(reshape(HFace, [100 100])); colormap(gray); % Affiche le visage reconstitué
———————————————————————————————————————————-
% Etape 1 : Conversion de l’image en espace de couleur YCbCr et détection de la région du visage
I5 = imread(‘path_to_image.jpg’); % Charger l’image (remplace ‘path_to_image.jpg’ par le chemin réel)
YI = rgb2ycbcr(I5); % Convertit l’image RGB en YCbCr
FaceArea = (YI(:, :, 3) > 140); % Crée une masque binaire pour détecter la région du visage
imagesc(FaceArea) % Affiche la région détectée
figure; plot(sum(FaceArea)) % Affiche la somme des pixels de la région détectée selon les colonnes
figure; plot(sum(FaceArea’)) % Affiche la somme des pixels de la région détectée selon les lignes
Xindices = find(sum(FaceArea) > 100); % Trouve les indices des colonnes avec une somme de pixels supérieure à 100
Xmin = min(Xindices); % Trouve l’indice minimum des colonnes
Xmax = max(Xindices); % Trouve l’indice maximum des colonnes
Yindices = find(sum(FaceArea’) > 100); % Trouve les indices des lignes avec une somme de pixels supérieure à 100
Ymin = min(Yindices); % Trouve l’indice minimum des lignes
Ymax = max(Yindices); % Trouve l’indice maximum des lignes
% Etape 2 : Détection des cercles (yeux) dans l’image
I = imread(’23-1.jpg’); % Charger une nouvelle image
[centersDark, radiiDark] = imfindcircles(rgb2gray(I), [25 50], ‘ObjectPolarity’, ‘dark’, ‘Sensitivity’, 0.9); % Trouve les cercles dans l’image
image(I) % Affiche l’image
viscircles(centersDark, radiiDark, ‘EdgeColor’, ‘y’) % Superpose les cercles détectés sur l’image
% Dernière étape : PCA pour la reconnaissance faciale
% Etape 3 : Chargement des données de visages
load(‘faces.mat’) % Charger les données de visages préalablement sauvegardées
% Etape 4 : Conversion des images de visages en vecteurs
clear X % Efface la variable ‘X’ si elle existe
for i = 1:29 % Boucle sur les 29 visages extraits
X(:, i) = reshape(Face(:, :, i), [10000 1]); % Convertit chaque visage en un vecteur de 10000 éléments
end
% Etape 5 : Calcul du visage moyen
averageFace = mean(X, 2); % Calcule le visage moyen en prenant la moyenne de chaque ligne de ‘X’
% Etape 6 : Soustraction du visage moyen
A = double(X) – averageFace; % Soustrait le visage moyen de chaque colonne de ‘X’
% Etape 7 : Décomposition en valeurs singulières (SVD)
[U, S, V] = svds(A, 15); % Effectue une SVD sur ‘A’ pour obtenir les 15 valeurs singulières et vecteurs principaux
% Etape 13 : Projection des visages d’entraînement dans l’espace des visages
LowTrainFaces = U’ * A; % Projette les visages d’entraînement dans l’espace des visages
% Etape 14 : Reconnaissance d’un visage inconnu
I = imread(’21-4.jpg’); % Charge une nouvelle image
Crop = extractFace(I); % Extrait le visage de l’image
imagesc(Crop) % Affiche le visage extrait
UnknownVec = reshape(Crop, [10000 1]); % Convertit le visage extrait en vecteur
LowUnknownVec = U’ * (double(UnknownVec) – averageFace); % Projette le visage extrait dans l’espace des visages
EuclideanDist = sqrt(sum((LowTrainFaces – LowUnknownVec).^2)); % Calcule la distance euclidienne entre le visage inconnu et les visages d’entraînement
[minDist, minIndex] = min(EuclideanDist); % Trouve la distance minimale et l’index du visage correspondant
figure; imagesc(Face(:, :, minIndex)) % Affiche le visage correspondant
[sortDist, sortIndex] = sort(EuclideanDist, ‘ascend’); % Trie les distances euclidiennes par ordre croissant
imagesc(Face(:, :, sortIndex(7))) % Affiche le septième visage le plus proche% Section 1 : Chargement des noms de fichiers et dates
filenames = dir; % Récupère la liste des fichiers dans le répertoire courant
clear files dates % Efface les variables ‘files’ et ‘dates’ si elles existent
for i = 3:size(filenames, 1) % Boucle à partir du troisième élément pour ignorer ‘.’ et ‘..’
files{i-2} = filenames(i).name; % Stocke le nom du fichier dans ‘files’
dates{i-2} = filenames(i).date; % Stocke la date du fichier dans ‘dates’
end
% Section 2 : Chargement des images
clear I % Efface la variable ‘I’ si elle existe
ii = 1; % Initialise l’index pour les images chargées
for i = 1:size(files, 2) % Boucle sur tous les fichiers
try
I{ii} = imread(files{i}); % Tente de lire l’image et la stocke dans ‘I’
ii = ii + 1; % Incrémente l’index
catch
i % Affiche l’index de l’image qui ne peut pas être lue
end
end
% Section 3 : Extraction des visages
for i = 1:29 % Boucle sur les 29 premières images
Face(:, :, i) = extractFace(I{i}); % Extrait le visage de l’image et le stocke dans ‘Face’
end
for i = 1:29 % Boucle pour afficher les visages extraits
figure
image(Face(:, :, i)); colormap(gray); % Affiche le visage en niveaux de gris
end
% Section 4 : Conversion des images en vecteurs
clear X % Efface la variable ‘X’ si elle existe
for i = 1:29 % Boucle sur les 29 visages extraits
X(:, i) = reshape(Face(:, :, i), [10000 1]); % Convertit chaque visage en un vecteur de 10000 éléments
end
imagesc(X) % Affiche la matrice ‘X’ sous forme d’image
% Section 5 : Calcul du visage moyen
averageFace = mean(X, 2); % Calcule le visage moyen en prenant la moyenne de chaque ligne de ‘X’
imagesc(reshape(averageFace, [100 100])); colormap(gray); % Affiche le visage moyen
% Section 6 : Soustraction du visage moyen
A = double(X) – averageFace; % Soustrait le visage moyen de chaque colonne de ‘X’
% Section 7 : Décomposition en valeurs singulières (SVD)
[U, S, D] = svds(A, 15); % Effectue une SVD sur ‘A’ pour obtenir les 15 valeurs singulières et vecteurs principaux
% Section 8 : Affichage des valeurs singulières
diag(S) % Affiche les valeurs singulières sous forme de vecteur diagonal
% Section 9 : Affichage des Eigenfaces
for i = 1:9 % Boucle pour afficher les 9 premiers eigenfaces
figure
imagesc(reshape(U(:, i), [100 100])); % Affiche chaque eigenface
colormap(gray);
end
% Section 10 : Reconnaissance de visage
RegFace = X(:, 9); % Sélectionne un visage de référence dans ‘X’
imagesc(reshape(RegFace, [100 100])); colormap(gray); axis image; % Affiche le visage de référence
LFace = U’ * (double(RegFace) – averageFace); % Projette le visage de référence dans l’espace des visages
HFace = U * LFace + averageFace; % Reconstitue le visage à partir de l’espace des visages
imagesc(reshape(HFace, [100 100])); colormap(gray); axis image; % Affiche le visage reconstitué
% Section 11 : Reconnaissance d’un visage inconnu
I = imread("18-1.jpg"); % Charge une nouvelle image
UnknownCrop = extractFace(I); % Extrait le visage de l’image
imagesc(UnknownCrop) % Affiche le visage extrait
RegFace = reshape(UnknownCrop, [10000 1]); % Convertit le visage extrait en vecteur
LFace = U’ * (double(RegFace) – averageFace); % Projette le visage extrait dans l’espace des visages
HFace = U * LFace + averageFace; % Reconstitue le visage extrait
imagesc(reshape(HFace, [100 100])); colormap(gray); % Affiche le visage reconstitué
———————————————————————————————————————————-
% Etape 1 : Conversion de l’image en espace de couleur YCbCr et détection de la région du visage
I5 = imread(‘path_to_image.jpg’); % Charger l’image (remplace ‘path_to_image.jpg’ par le chemin réel)
YI = rgb2ycbcr(I5); % Convertit l’image RGB en YCbCr
FaceArea = (YI(:, :, 3) > 140); % Crée une masque binaire pour détecter la région du visage
imagesc(FaceArea) % Affiche la région détectée
figure; plot(sum(FaceArea)) % Affiche la somme des pixels de la région détectée selon les colonnes
figure; plot(sum(FaceArea’)) % Affiche la somme des pixels de la région détectée selon les lignes
Xindices = find(sum(FaceArea) > 100); % Trouve les indices des colonnes avec une somme de pixels supérieure à 100
Xmin = min(Xindices); % Trouve l’indice minimum des colonnes
Xmax = max(Xindices); % Trouve l’indice maximum des colonnes
Yindices = find(sum(FaceArea’) > 100); % Trouve les indices des lignes avec une somme de pixels supérieure à 100
Ymin = min(Yindices); % Trouve l’indice minimum des lignes
Ymax = max(Yindices); % Trouve l’indice maximum des lignes
% Etape 2 : Détection des cercles (yeux) dans l’image
I = imread(’23-1.jpg’); % Charger une nouvelle image
[centersDark, radiiDark] = imfindcircles(rgb2gray(I), [25 50], ‘ObjectPolarity’, ‘dark’, ‘Sensitivity’, 0.9); % Trouve les cercles dans l’image
image(I) % Affiche l’image
viscircles(centersDark, radiiDark, ‘EdgeColor’, ‘y’) % Superpose les cercles détectés sur l’image
% Dernière étape : PCA pour la reconnaissance faciale
% Etape 3 : Chargement des données de visages
load(‘faces.mat’) % Charger les données de visages préalablement sauvegardées
% Etape 4 : Conversion des images de visages en vecteurs
clear X % Efface la variable ‘X’ si elle existe
for i = 1:29 % Boucle sur les 29 visages extraits
X(:, i) = reshape(Face(:, :, i), [10000 1]); % Convertit chaque visage en un vecteur de 10000 éléments
end
% Etape 5 : Calcul du visage moyen
averageFace = mean(X, 2); % Calcule le visage moyen en prenant la moyenne de chaque ligne de ‘X’
% Etape 6 : Soustraction du visage moyen
A = double(X) – averageFace; % Soustrait le visage moyen de chaque colonne de ‘X’
% Etape 7 : Décomposition en valeurs singulières (SVD)
[U, S, V] = svds(A, 15); % Effectue une SVD sur ‘A’ pour obtenir les 15 valeurs singulières et vecteurs principaux
% Etape 13 : Projection des visages d’entraînement dans l’espace des visages
LowTrainFaces = U’ * A; % Projette les visages d’entraînement dans l’espace des visages
% Etape 14 : Reconnaissance d’un visage inconnu
I = imread(’21-4.jpg’); % Charge une nouvelle image
Crop = extractFace(I); % Extrait le visage de l’image
imagesc(Crop) % Affiche le visage extrait
UnknownVec = reshape(Crop, [10000 1]); % Convertit le visage extrait en vecteur
LowUnknownVec = U’ * (double(UnknownVec) – averageFace); % Projette le visage extrait dans l’espace des visages
EuclideanDist = sqrt(sum((LowTrainFaces – LowUnknownVec).^2)); % Calcule la distance euclidienne entre le visage inconnu et les visages d’entraînement
[minDist, minIndex] = min(EuclideanDist); % Trouve la distance minimale et l’index du visage correspondant
figure; imagesc(Face(:, :, minIndex)) % Affiche le visage correspondant
[sortDist, sortIndex] = sort(EuclideanDist, ‘ascend’); % Trie les distances euclidiennes par ordre croissant
imagesc(Face(:, :, sortIndex(7))) % Affiche le septième visage le plus proche % Section 1 : Chargement des noms de fichiers et dates
filenames = dir; % Récupère la liste des fichiers dans le répertoire courant
clear files dates % Efface les variables ‘files’ et ‘dates’ si elles existent
for i = 3:size(filenames, 1) % Boucle à partir du troisième élément pour ignorer ‘.’ et ‘..’
files{i-2} = filenames(i).name; % Stocke le nom du fichier dans ‘files’
dates{i-2} = filenames(i).date; % Stocke la date du fichier dans ‘dates’
end
% Section 2 : Chargement des images
clear I % Efface la variable ‘I’ si elle existe
ii = 1; % Initialise l’index pour les images chargées
for i = 1:size(files, 2) % Boucle sur tous les fichiers
try
I{ii} = imread(files{i}); % Tente de lire l’image et la stocke dans ‘I’
ii = ii + 1; % Incrémente l’index
catch
i % Affiche l’index de l’image qui ne peut pas être lue
end
end
% Section 3 : Extraction des visages
for i = 1:29 % Boucle sur les 29 premières images
Face(:, :, i) = extractFace(I{i}); % Extrait le visage de l’image et le stocke dans ‘Face’
end
for i = 1:29 % Boucle pour afficher les visages extraits
figure
image(Face(:, :, i)); colormap(gray); % Affiche le visage en niveaux de gris
end
% Section 4 : Conversion des images en vecteurs
clear X % Efface la variable ‘X’ si elle existe
for i = 1:29 % Boucle sur les 29 visages extraits
X(:, i) = reshape(Face(:, :, i), [10000 1]); % Convertit chaque visage en un vecteur de 10000 éléments
end
imagesc(X) % Affiche la matrice ‘X’ sous forme d’image
% Section 5 : Calcul du visage moyen
averageFace = mean(X, 2); % Calcule le visage moyen en prenant la moyenne de chaque ligne de ‘X’
imagesc(reshape(averageFace, [100 100])); colormap(gray); % Affiche le visage moyen
% Section 6 : Soustraction du visage moyen
A = double(X) – averageFace; % Soustrait le visage moyen de chaque colonne de ‘X’
% Section 7 : Décomposition en valeurs singulières (SVD)
[U, S, D] = svds(A, 15); % Effectue une SVD sur ‘A’ pour obtenir les 15 valeurs singulières et vecteurs principaux
% Section 8 : Affichage des valeurs singulières
diag(S) % Affiche les valeurs singulières sous forme de vecteur diagonal
% Section 9 : Affichage des Eigenfaces
for i = 1:9 % Boucle pour afficher les 9 premiers eigenfaces
figure
imagesc(reshape(U(:, i), [100 100])); % Affiche chaque eigenface
colormap(gray);
end
% Section 10 : Reconnaissance de visage
RegFace = X(:, 9); % Sélectionne un visage de référence dans ‘X’
imagesc(reshape(RegFace, [100 100])); colormap(gray); axis image; % Affiche le visage de référence
LFace = U’ * (double(RegFace) – averageFace); % Projette le visage de référence dans l’espace des visages
HFace = U * LFace + averageFace; % Reconstitue le visage à partir de l’espace des visages
imagesc(reshape(HFace, [100 100])); colormap(gray); axis image; % Affiche le visage reconstitué
% Section 11 : Reconnaissance d’un visage inconnu
I = imread("18-1.jpg"); % Charge une nouvelle image
UnknownCrop = extractFace(I); % Extrait le visage de l’image
imagesc(UnknownCrop) % Affiche le visage extrait
RegFace = reshape(UnknownCrop, [10000 1]); % Convertit le visage extrait en vecteur
LFace = U’ * (double(RegFace) – averageFace); % Projette le visage extrait dans l’espace des visages
HFace = U * LFace + averageFace; % Reconstitue le visage extrait
imagesc(reshape(HFace, [100 100])); colormap(gray); % Affiche le visage reconstitué
———————————————————————————————————————————-
% Etape 1 : Conversion de l’image en espace de couleur YCbCr et détection de la région du visage
I5 = imread(‘path_to_image.jpg’); % Charger l’image (remplace ‘path_to_image.jpg’ par le chemin réel)
YI = rgb2ycbcr(I5); % Convertit l’image RGB en YCbCr
FaceArea = (YI(:, :, 3) > 140); % Crée une masque binaire pour détecter la région du visage
imagesc(FaceArea) % Affiche la région détectée
figure; plot(sum(FaceArea)) % Affiche la somme des pixels de la région détectée selon les colonnes
figure; plot(sum(FaceArea’)) % Affiche la somme des pixels de la région détectée selon les lignes
Xindices = find(sum(FaceArea) > 100); % Trouve les indices des colonnes avec une somme de pixels supérieure à 100
Xmin = min(Xindices); % Trouve l’indice minimum des colonnes
Xmax = max(Xindices); % Trouve l’indice maximum des colonnes
Yindices = find(sum(FaceArea’) > 100); % Trouve les indices des lignes avec une somme de pixels supérieure à 100
Ymin = min(Yindices); % Trouve l’indice minimum des lignes
Ymax = max(Yindices); % Trouve l’indice maximum des lignes
% Etape 2 : Détection des cercles (yeux) dans l’image
I = imread(’23-1.jpg’); % Charger une nouvelle image
[centersDark, radiiDark] = imfindcircles(rgb2gray(I), [25 50], ‘ObjectPolarity’, ‘dark’, ‘Sensitivity’, 0.9); % Trouve les cercles dans l’image
image(I) % Affiche l’image
viscircles(centersDark, radiiDark, ‘EdgeColor’, ‘y’) % Superpose les cercles détectés sur l’image
% Dernière étape : PCA pour la reconnaissance faciale
% Etape 3 : Chargement des données de visages
load(‘faces.mat’) % Charger les données de visages préalablement sauvegardées
% Etape 4 : Conversion des images de visages en vecteurs
clear X % Efface la variable ‘X’ si elle existe
for i = 1:29 % Boucle sur les 29 visages extraits
X(:, i) = reshape(Face(:, :, i), [10000 1]); % Convertit chaque visage en un vecteur de 10000 éléments
end
% Etape 5 : Calcul du visage moyen
averageFace = mean(X, 2); % Calcule le visage moyen en prenant la moyenne de chaque ligne de ‘X’
% Etape 6 : Soustraction du visage moyen
A = double(X) – averageFace; % Soustrait le visage moyen de chaque colonne de ‘X’
% Etape 7 : Décomposition en valeurs singulières (SVD)
[U, S, V] = svds(A, 15); % Effectue une SVD sur ‘A’ pour obtenir les 15 valeurs singulières et vecteurs principaux
% Etape 13 : Projection des visages d’entraînement dans l’espace des visages
LowTrainFaces = U’ * A; % Projette les visages d’entraînement dans l’espace des visages
% Etape 14 : Reconnaissance d’un visage inconnu
I = imread(’21-4.jpg’); % Charge une nouvelle image
Crop = extractFace(I); % Extrait le visage de l’image
imagesc(Crop) % Affiche le visage extrait
UnknownVec = reshape(Crop, [10000 1]); % Convertit le visage extrait en vecteur
LowUnknownVec = U’ * (double(UnknownVec) – averageFace); % Projette le visage extrait dans l’espace des visages
EuclideanDist = sqrt(sum((LowTrainFaces – LowUnknownVec).^2)); % Calcule la distance euclidienne entre le visage inconnu et les visages d’entraînement
[minDist, minIndex] = min(EuclideanDist); % Trouve la distance minimale et l’index du visage correspondant
figure; imagesc(Face(:, :, minIndex)) % Affiche le visage correspondant
[sortDist, sortIndex] = sort(EuclideanDist, ‘ascend’); % Trie les distances euclidiennes par ordre croissant
imagesc(Face(:, :, sortIndex(7))) % Affiche le septième visage le plus proche pca MATLAB Answers — New Questions
Remove NaNs from struct fields embedded in a cell array
Good afternoon,
I have a strange problem occuring when using import data has started adding random lines of NaNs, I do not know why this has happened but I need to remove them.
Within the attached sample, the struct is contained within a cell array, as the original code loops. WIthin the struct, the data field contains the 2D matrix, what I need this for any rows with NaN added to be removed from each one.
Can you help please?
ThanksGood afternoon,
I have a strange problem occuring when using import data has started adding random lines of NaNs, I do not know why this has happened but I need to remove them.
Within the attached sample, the struct is contained within a cell array, as the original code loops. WIthin the struct, the data field contains the 2D matrix, what I need this for any rows with NaN added to be removed from each one.
Can you help please?
Thanks Good afternoon,
I have a strange problem occuring when using import data has started adding random lines of NaNs, I do not know why this has happened but I need to remove them.
Within the attached sample, the struct is contained within a cell array, as the original code loops. WIthin the struct, the data field contains the 2D matrix, what I need this for any rows with NaN added to be removed from each one.
Can you help please?
Thanks struct, cell array, nan MATLAB Answers — New Questions
After installing MATLAB 2024a, I get the following warnings and errors after startup
Warning: Initializing Java preferences failed in matlabrc.
This indicates a potentially serious problem in your MATLAB setup, which should be resolved as soon as possible. Error detected was:
MATLAB:dispatcher:loadLibrary
C:Program FilesMATLABR2024abinwin64mcr.dll
Error using ismcc
C:Program FilesMATLABR2024abinwin64mcr.dll
Error occurred during deviceplugindetection initialization: C:Program
FilesMATLABR2024abinwin64mcr.dllWarning: Initializing Java preferences failed in matlabrc.
This indicates a potentially serious problem in your MATLAB setup, which should be resolved as soon as possible. Error detected was:
MATLAB:dispatcher:loadLibrary
C:Program FilesMATLABR2024abinwin64mcr.dll
Error using ismcc
C:Program FilesMATLABR2024abinwin64mcr.dll
Error occurred during deviceplugindetection initialization: C:Program
FilesMATLABR2024abinwin64mcr.dll Warning: Initializing Java preferences failed in matlabrc.
This indicates a potentially serious problem in your MATLAB setup, which should be resolved as soon as possible. Error detected was:
MATLAB:dispatcher:loadLibrary
C:Program FilesMATLABR2024abinwin64mcr.dll
Error using ismcc
C:Program FilesMATLABR2024abinwin64mcr.dll
Error occurred during deviceplugindetection initialization: C:Program
FilesMATLABR2024abinwin64mcr.dll startup failure MATLAB Answers — New Questions
Problem With Deep Learning Toolbox
Im trying to open the Deep Learning Toolbox. The following error is returned:
Error using deepNetworkDesigner (line 29)
Invalid default value for property ‘Network’ in class ‘deepapp.internal.editor.import.NoArgsCallStrategy’:
Undefined function ‘mtimes’ for input arguments of type ‘nnet.cnn.layer.Layer’.
Similarly while calling a pretianed network in a code, following error is returned:
lgraphGoogLeNet = layerGraph(googlenet);
Warning: While loading an object of class ‘DAGNetwork’:
Too many input arguments.
Dot indexing is not supported for variables of this type.
Error in DAGNetwork/get.LayerGraph (line 188)
val = this.PrivateNetwork.LayerGraph;
Error in DAGNetwork/getLayerGraph (line 230)
layerGraph = this.LayerGraph;
Error in DAGNetwork/layerGraph (line 12)
internalLayerGraph = this.getLayerGraph();Im trying to open the Deep Learning Toolbox. The following error is returned:
Error using deepNetworkDesigner (line 29)
Invalid default value for property ‘Network’ in class ‘deepapp.internal.editor.import.NoArgsCallStrategy’:
Undefined function ‘mtimes’ for input arguments of type ‘nnet.cnn.layer.Layer’.
Similarly while calling a pretianed network in a code, following error is returned:
lgraphGoogLeNet = layerGraph(googlenet);
Warning: While loading an object of class ‘DAGNetwork’:
Too many input arguments.
Dot indexing is not supported for variables of this type.
Error in DAGNetwork/get.LayerGraph (line 188)
val = this.PrivateNetwork.LayerGraph;
Error in DAGNetwork/getLayerGraph (line 230)
layerGraph = this.LayerGraph;
Error in DAGNetwork/layerGraph (line 12)
internalLayerGraph = this.getLayerGraph(); Im trying to open the Deep Learning Toolbox. The following error is returned:
Error using deepNetworkDesigner (line 29)
Invalid default value for property ‘Network’ in class ‘deepapp.internal.editor.import.NoArgsCallStrategy’:
Undefined function ‘mtimes’ for input arguments of type ‘nnet.cnn.layer.Layer’.
Similarly while calling a pretianed network in a code, following error is returned:
lgraphGoogLeNet = layerGraph(googlenet);
Warning: While loading an object of class ‘DAGNetwork’:
Too many input arguments.
Dot indexing is not supported for variables of this type.
Error in DAGNetwork/get.LayerGraph (line 188)
val = this.PrivateNetwork.LayerGraph;
Error in DAGNetwork/getLayerGraph (line 230)
layerGraph = this.LayerGraph;
Error in DAGNetwork/layerGraph (line 12)
internalLayerGraph = this.getLayerGraph(); matlab, deep learning, toolbox MATLAB Answers — New Questions
No usable results when using insEKF() instead of imufilter()
Part of what I want to do is fuse gyroscope and accelerometer data to get an orientation estimate. When I fuse the data using the imufilter() I get results looking very similar to what I am expecting, without majorly tweaking the noise settings and so on.
I then proceeded to try to fuse it using the insEKF() because I eventually also need to fuse GPS measurements. For the first part I only added the gyroscope and the accelerometer to see the orientation estimate. I coded it very similar to the example in the documentation but for some reason the estimated orientation just start spinning and jumping around "uncontrollably".
Heres part of how Ive implemented it:
I also tried tuning it using the data I got from the other filter but that not seems like the issue. Also fusing the data sequentially using fuse() didnt change anything.
…
gyrofix=[gyro(:,2) gyro(:,3) gyro(:,1)]; %data already in workspace
acclfix=[-accl(:,2) -accl(:,3) -accl(:,1)];
option = insOptions(ReferenceFrame="ENU");
insAccel=insAccelerometer;
insGyro=insGyroscope;
tt_meas=timetable(acclfix,gyrofix,’RowTimes’, seconds(0:0.01:(size(acclfix,1)/100)-0.01))
tt_meas.Properties.VariableNames={‘Accelerometer’ ‘Gyroscope’}
tt_meas.Accelerometer(:,:)=0;
filt = insEKF(insAccel, insGyro, option);
initOrient=quaternion(1, 0, 0, 0);
stateparts(filt,"Orientation",compact(initOrient));
statecovparts(filt,"Orientation",0.01);
mnoise=tunernoise(filt);
mnoise.AccelerometerNoise=0.0002;
mnoise.GyroscopeNoise=9e-5;
untunedEst = estimateStates(filt,tt_meas,mnoise);Part of what I want to do is fuse gyroscope and accelerometer data to get an orientation estimate. When I fuse the data using the imufilter() I get results looking very similar to what I am expecting, without majorly tweaking the noise settings and so on.
I then proceeded to try to fuse it using the insEKF() because I eventually also need to fuse GPS measurements. For the first part I only added the gyroscope and the accelerometer to see the orientation estimate. I coded it very similar to the example in the documentation but for some reason the estimated orientation just start spinning and jumping around "uncontrollably".
Heres part of how Ive implemented it:
I also tried tuning it using the data I got from the other filter but that not seems like the issue. Also fusing the data sequentially using fuse() didnt change anything.
…
gyrofix=[gyro(:,2) gyro(:,3) gyro(:,1)]; %data already in workspace
acclfix=[-accl(:,2) -accl(:,3) -accl(:,1)];
option = insOptions(ReferenceFrame="ENU");
insAccel=insAccelerometer;
insGyro=insGyroscope;
tt_meas=timetable(acclfix,gyrofix,’RowTimes’, seconds(0:0.01:(size(acclfix,1)/100)-0.01))
tt_meas.Properties.VariableNames={‘Accelerometer’ ‘Gyroscope’}
tt_meas.Accelerometer(:,:)=0;
filt = insEKF(insAccel, insGyro, option);
initOrient=quaternion(1, 0, 0, 0);
stateparts(filt,"Orientation",compact(initOrient));
statecovparts(filt,"Orientation",0.01);
mnoise=tunernoise(filt);
mnoise.AccelerometerNoise=0.0002;
mnoise.GyroscopeNoise=9e-5;
untunedEst = estimateStates(filt,tt_meas,mnoise); Part of what I want to do is fuse gyroscope and accelerometer data to get an orientation estimate. When I fuse the data using the imufilter() I get results looking very similar to what I am expecting, without majorly tweaking the noise settings and so on.
I then proceeded to try to fuse it using the insEKF() because I eventually also need to fuse GPS measurements. For the first part I only added the gyroscope and the accelerometer to see the orientation estimate. I coded it very similar to the example in the documentation but for some reason the estimated orientation just start spinning and jumping around "uncontrollably".
Heres part of how Ive implemented it:
I also tried tuning it using the data I got from the other filter but that not seems like the issue. Also fusing the data sequentially using fuse() didnt change anything.
…
gyrofix=[gyro(:,2) gyro(:,3) gyro(:,1)]; %data already in workspace
acclfix=[-accl(:,2) -accl(:,3) -accl(:,1)];
option = insOptions(ReferenceFrame="ENU");
insAccel=insAccelerometer;
insGyro=insGyroscope;
tt_meas=timetable(acclfix,gyrofix,’RowTimes’, seconds(0:0.01:(size(acclfix,1)/100)-0.01))
tt_meas.Properties.VariableNames={‘Accelerometer’ ‘Gyroscope’}
tt_meas.Accelerometer(:,:)=0;
filt = insEKF(insAccel, insGyro, option);
initOrient=quaternion(1, 0, 0, 0);
stateparts(filt,"Orientation",compact(initOrient));
statecovparts(filt,"Orientation",0.01);
mnoise=tunernoise(filt);
mnoise.AccelerometerNoise=0.0002;
mnoise.GyroscopeNoise=9e-5;
untunedEst = estimateStates(filt,tt_meas,mnoise); sensor fusion, inertial, filter, ekf, insekf MATLAB Answers — New Questions
How to find the line of intersection between the following two planes and plot the intersected line on the same two planes?
How to find the line of intersection between the following two planes and plot the intersected line on the same two planes?
The following points contain the following points:
The first plane:
P1 = 177668442.453315 -102576923.076923 0
P2 = -102576923.076923 177668442.453315 -102576923.076923
P3= 0 -102576923.076923 88834221.2266576
The secod Plane:
P1= 152763459.308716 -102576923.076923 0
P2= -102576923.076923 183536536.231793 -102576923.076923
P3= 0 -102576923.076923 91768268.1158967How to find the line of intersection between the following two planes and plot the intersected line on the same two planes?
The following points contain the following points:
The first plane:
P1 = 177668442.453315 -102576923.076923 0
P2 = -102576923.076923 177668442.453315 -102576923.076923
P3= 0 -102576923.076923 88834221.2266576
The secod Plane:
P1= 152763459.308716 -102576923.076923 0
P2= -102576923.076923 183536536.231793 -102576923.076923
P3= 0 -102576923.076923 91768268.1158967 How to find the line of intersection between the following two planes and plot the intersected line on the same two planes?
The following points contain the following points:
The first plane:
P1 = 177668442.453315 -102576923.076923 0
P2 = -102576923.076923 177668442.453315 -102576923.076923
P3= 0 -102576923.076923 88834221.2266576
The secod Plane:
P1= 152763459.308716 -102576923.076923 0
P2= -102576923.076923 183536536.231793 -102576923.076923
P3= 0 -102576923.076923 91768268.1158967 plane, calculus, mathematics, plot MATLAB Answers — New Questions