WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Ohne Schleife Elemente der Matrizen Ecke summieren

 

Willie14
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 02.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.01.2018, 19:11     Titel: Ohne Schleife Elemente der Matrizen Ecke summieren
  Antworten mit Zitat      
Hi alle ,

Man macht als Anfänger schon wieder harte Zeiten , und ich bin leider an euch angewiesen .
Das Problem in Coursera lautet:
Ohne irgendeine Loop , schreib ne peri_sum function, was summiert die ganzen Elemente , was in der Ecke der Matrizen steht.

Ok , dass v (1) oder v (end) weiss jeder; aber wie soll man es ohne 1 Loop machen?

Dazu noch mit verändernde Grösse ,

Danke für jeden Hinweis,

Willie
Private Nachricht senden Benutzer-Profile anzeigen


Friidayy
Forum-Century

Forum-Century


Beiträge: 225
Anmeldedatum: 17.12.13
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 02.01.2018, 19:25     Titel:
  Antworten mit Zitat      
hallo wiliie,

das könnte z.b. so funktionieren

Code:
clear all; close all; clc;

A = rand(3,5)
[n,m] = size(A);
eck = [1 n n*m-(n-1) n*m];

A(eck)
sum(A(eck))


in eck stehen die indices der eckpunkte der matrix.

gruß, michael
Private Nachricht senden Benutzer-Profile anzeigen
 
Willie14
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 02.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.01.2018, 06:57     Titel:
  Antworten mit Zitat      
Oi Fridayy, damnke fuer die schnelle Antwort .

Allerdings muss ich zur Sicherheit diese Aufgabe der Coursera nochmal kopieren, damit man nichts Falsches macht, was ich gerne macht.... Shocked

Write a function called peri_sum that computes the sum of the elements of an input matrix A
that are on the “perimeter” of A. In other words, it adds together the elements that are in the first
and last rows and columns. Note that the smallest dimension of A is at least 2, but you do not need
to check this. Hint: do not double count any elements!

Ich habe folgende Code erstellt :


Code:



function [ s]= peri_sum(Z)
 m= (size(Z)(1,1))  ;  
 n=   (size(Z)(1,2))  ;  
s= sum (Z(1,:)) +sum(Z(:,n)) +sum(Z(:,1))+ sum(Z(m,:))- (Z(1,1) +Z(m,1)+Z(1,n)+Z(m,n) ) ;
disp s
end  
     
      % THIS IS THE SCHEME  OF PROGRAMMING WORK :  CATAT DULZ BAG YG MJLSSKAN  di SOAL  HOW THE FCT WORKS
      %  PIKIRKAN VAR APA YG PERLU ADA
      %Technik apa saja yg ada ? loop ? Assignmemnt=?  Use it.
     
    % 5Note if 1 fct misses args  ,it will alwaysnoted :
    %>> add_x(H)   error: 'x' undefined near line 6 column 23
   
    % we always FORGET TO DISPLAY THE RESULT OF THE MATRIX with disp(a)  , print ist for file formatting .
   


 


Danke fuer deine Bereitschaft zu antworten !

Lg,

Willi
Private Nachricht senden Benutzer-Profile anzeigen
 
Friidayy
Forum-Century

Forum-Century


Beiträge: 225
Anmeldedatum: 17.12.13
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 03.01.2018, 10:31     Titel:
  Antworten mit Zitat      
hallo willie,

es gab da noch ein problem mit dem befehl size und disp hat auch nicht das richitge angezeigt.

so sollte es funktionieren

Code:
function s = peri_sum(Z)
[m,n] = size(Z);
s = sum(Z(1,:)) + sum(Z(:,n)) + sum(Z(:,1)) + sum(Z(m,:)) - (Z(1,1) + Z(m,1) + Z(1,n) + Z(m,n));
disp(s)
end


gruß, michael
Private Nachricht senden Benutzer-Profile anzeigen
 
Willie14
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 02.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.01.2018, 19:33     Titel:
  Antworten mit Zitat      
Super!

Aber man will noch wissen , warum ich 30 min vorher doch schon die lines mit m und n genauso via Googling MATLAB wie du gemacht hast [m,n]=....

aber der sagt mir Error :
"
Not enough input arguments.

Error in peri_sum (line 2)
[m,n]=size(Z);
"

Was habe ich vergessen,ranzumachen ?


Danke fuer die tolle Arbeit .

Lg,

Willi
Private Nachricht senden Benutzer-Profile anzeigen
 
Friidayy
Forum-Century

Forum-Century


Beiträge: 225
Anmeldedatum: 17.12.13
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 03.01.2018, 20:12     Titel:
  Antworten mit Zitat      
liegt evtl. an der matlab-version, welche version benutzt du?

anstelle von
Code:


kannst du natürlich auch schreiben
Code:
m=size(Z,1); n=size(Z,2)


gruß, michael
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.01.2018, 23:25     Titel:
  Antworten mit Zitat      
Hallo,

meine Vermutung ist eher der Aufruf der Funktion. Ein Klick auf den Run-Button reicht nicht, man muss schon eine Matrix an die Funktion übergeben. Also z.B.
Code:
myZ = ...
s = peri_sum(myZ)


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.