Azzera filtri
Azzera filtri

Is there any other way than manually updating the noise parameter such that the algorithm re runs for every parameter and then plots the graph ?

1 visualizzazione (ultimi 30 giorni)
I have the following code where the noise parameter changes in an interval of 0.01.I want to plot the graph without manually re-entering all the data.x axis will be 0.01-0.10 and y axis will be RMSE
V_test=imnoise(V_test,'gaussian', *0.01*);%changing 0.01 till 0.10
V_test = V_test - mean(V_test(:));
V_test = V_test / sqrt(mean(V_test(:).^2));
V_test = V_test + 0.25;
V_test = V_test * 0.25;
V_test = min(V_test,1);
V_test = max(V_test,0);
H_test=abs(randn(49,472)); %multiplicative step H_test = H_test.*(W_test'*V_test)./(W_test'*W_test*H_test + 1e-9); error=sum((V_test- W_test*H_test).^2)/(sum(V_test).^2); % Errors RMSE = sqrt(error);%store this value

Risposta accettata

Stephen23
Stephen23 il 30 Nov 2017
Modificato: Stephen23 il 12 Dic 2017
Use a loop:
vec = 0.01:0.01:0.10; % or whatever step size you need.
out = nan(size(vec));
for k = 1:numel(vec)
V_test = imnoise(V_test,'gaussian', vec(k));
... the rest of your code
out(k) = sqrt(...);
end
  2 Commenti
kitty varghese
kitty varghese il 12 Dic 2017
U missed ":" in your code i.e V_test = imnoise(V_test,'gaussian', : ) also, when I do this change I'm getting error msg "Undefined function or variable 'imnoise'"
Stephen23
Stephen23 il 12 Dic 2017
@kitty Varghese: Why do you think that my answer needs : ? On each iteration you need to provide one value from vec, as my answer shows.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su 2-D and 3-D Plots in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by