Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

Aproximace charakteristiky Atenuátoru

 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Teorie
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Celeron



Založen: Apr 02, 2011
Příspěvky: 17508
Bydliště: Nový Bydžov

PříspěvekZaslal: čt květen 25 2023, 0:10    Předmět: Aproximace charakteristiky Atenuátoru Citovat

Osmi ∏ článkovej Atenuátor. Chci ho co nejvíc útlumově vyrovnat podle vstupního kmitočtu. To znamená ho změřit v několika kmitočtech a udělat tabulku odchylek od ideálu a pak mezi body tabulky dělat výběr pomocí přímkový aproximace. To jsem už jednou v A51 dělal, takže vím jak na to.
Ale čím dál jsem přesvědčenej, že to nebude stačit, protože přeci při každým nastaveným útlumu Atenuátoru bude jiná odchylka.
Netušíte někdo, jak na to? Něco jako dvojtá aproximace? Nebo existuje něco jako 2D aproximace? Upozorňuji, že ani Open AI nevěděl jak na to, nejspís nepochopil co přesně chci.

_________________
Jirka

Proč mi nemůže všechno chodit hned ?!!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
asdf



Založen: Oct 06, 2022
Příspěvky: 182

PříspěvekZaslal: čt květen 25 2023, 19:33    Předmět: Citovat

Nevím, jestli jsem to správně pochopil, ale možná by to šlo nějak takhle (viz přiložené pdfko).
Ty determinanty se počítají takhle: https://cs.wikipedia.org/wiki/Determinant#Matice_%C5%99%C3%A1du_3



linreg2d.pdf
 Komentář:

Stáhnout
 Soubor:  linreg2d.pdf
 Velikost:  18.48 kB
 Staženo:  63 krát

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
JirkaZ



Založen: Feb 26, 2021
Příspěvky: 2735

PříspěvekZaslal: čt květen 25 2023, 20:59    Předmět: Citovat

Podle mě to bude parametrická soustava charakteristik, resp.k nim inverzních korekčních křivek, kde parametrem bude zvolený útlum.

Takže změřit frekvenční charakteristiku atenuátoru při všech útlumech.

Aproximační funkci z tabulky hodnot umí určit třeba LibreOffice Calc (a předpokládám, že něco jiného podobného taky).

_________________
Kdo chce, hledá způsob;
kdo ne - hledá důvod.

Ze dvou možností často volím tu třetí.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Celeron



Založen: Apr 02, 2011
Příspěvky: 17508
Bydliště: Nový Bydžov

PříspěvekZaslal: pá květen 26 2023, 18:39    Předmět: Citovat

Nojo, pole neoraný. Musím si o tom něco přečíst. Díky za odkaz.
S tím vyměřováním bude problém, je to na dlouho a pokud s tím půjdu někam, kde na to mají vybavení, tak tam nebudu moct být libovolně dlouho.

Napadlo mě zjistit charakteristiku pro každej zapnutej samostatnej ∏ článek, pokud nebude moc zvlněnej, tak ho zapsat třeba na deseti různých kmitočtech a tak to udělat pro všech 8 ∏ článků.
Pak vzít při nastavování útlumu jen ty ∏ články, co jsou sepnutý, každej aproximovat pro vstupní kmitočet a ty odchylky od jednotlivých ∏ článků sečíst a nakonec nastavit podle odchylky "opravné" sepnutí ∏ článků. Samozřejmě se zase ta odchylka změní ale charakteristika by se měla víc přiblížit k "rovné čáře". Pokud by se to provedlo opakovaně třeba 3 x za sebou, tak by to mohlo dotáhnout útlum na blízkou hodnotu "rovný čáry". Aspoň si to myslím....
Ale jestli bude atenuátor při měření "hodně křivej" tak tohle asi nebude optimální řešení...

_________________
Jirka

Proč mi nemůže všechno chodit hned ?!!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
asdf



Založen: Oct 06, 2022
Příspěvky: 182

PříspěvekZaslal: so květen 27 2023, 10:51    Předmět: Citovat

Celeron napsal(a):
Díky za odkaz.
Což z toho odkazu použiješ jen ten jeden vzoreček. Spíš jde o to přiložené PDFko. Tam by měla být ta 2D aproximace. Snad je to to, co jsi myslel.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
asdf



Založen: Oct 06, 2022
Příspěvky: 182

PříspěvekZaslal: ne květen 28 2023, 14:52    Předmět: Citovat

Ještě mě napadlo, že by pro Tebe mohl být čitelnější program v C.
kód:
#include <stdio.h>
#include <stdlib.h>

typedef struct
{
   double x;
   double y;
   double z;
   
} POINT;

static double det3(
   double a11, double a12, double a13,
   double a21, double a22, double a23,
   double a31, double a32, double a33
)
{
   return a11*a22*a33 + a12*a23*a31 + a13*a21*a32 - a13*a22*a31 - a12*a21*a33 - a11*a23*a32;
}

int main(int argc, const char **argv)
{
   POINT values[] =
   {
      { 0, 0, 1 },
      { 1, 0, 2 },
      { 0, 1, 3 }
   };
   double sx = 0, sy = 0, sz = 0, sx2 = 0, sy2 = 0, sxy = 0, sxz = 0, syz = 0;
   int n = sizeof(values) / sizeof(values[0]);
   int i;
   double a, b, c;
   
   for ( i = 0; i < n; i++ )
   {
      sx += values[i].x;
      sy += values[i].y;
      sz += values[i].z;
      sx2 += values[i].x * values[i].x;
      sy2 += values[i].y * values[i].y;
      sxy += values[i].x * values[i].y;
      sxz += values[i].x * values[i].z;
      syz += values[i].y * values[i].z;
   }
   
   a = det3(
      sxz, sxy, sx,
      syz, sy2, sy,
      sz,  sy,  n
   ) / det3(
      sx2, sxy, sx,
      sxy, sy2, sy,
      sx,  sy,  n
   );
   
   b = det3(
      sx2, sxz, sx,
      sxy, syz, sy,
      sx,  sz,  n
   ) / det3(
      sx2, sxy, sx,
      sxy, sy2, sy,
      sx,  sy,  n
   );
   
   c = det3(
      sx2, sxy, sxz,
      sxy, sy2, syz,
      sx,  sy,  sz
   ) / det3(
      sx2, sxy, sx,
      sxy, sy2, sy,
      sx,  sy,  n
   );
   
   printf("a=%f\nb=%f\nc=%f\n\n", a, b, c);
   
   for ( i = 0; i < n; i++ )
   {
      printf("x=%f, y=%f, z=%f, z_approx=%f\n", values[i].x, values[i].y, values[i].z, a * values[i].x + b * values[i].y + c);
   }
   
   return 0;
}
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Celeron



Založen: Apr 02, 2011
Příspěvky: 17508
Bydliště: Nový Bydžov

PříspěvekZaslal: ne květen 28 2023, 16:15    Předmět: Citovat

Díky, kouknu večer na to
Tohle mi sepsal OpenAI. Ještě jsem to neprocházel ale ta rovnice je stejná jako jsem kdysi použil u 80C51. Ale je to jen jednoduchá přímkovka.
kód:

// Pole s měřenými kmitočty
const float measuredFrequencies[] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0}; // Nahraďte skutečnými kmitočty

// Pole s měřenými útlumy
const float measuredAttenuation[] = {0, 1, 2, 3, 4, 5}; // Nahraďte skutečnými hodnotami útlumu

// Počet měřených bodů
const int numMeasuredPoints = sizeof(measuredFrequencies) / sizeof(measuredFrequencies[0]);

// Funkce pro lineární interpolaci
float linearInterpolation(float x, float x0, float x1, float y0, float y1) {
  return y0 + (x - x0) * (y1 - y0) / (x1 - x0);
}

// Funkce pro výpočet útlumu na základě kmitočtu
float calculateAttenuation(float frequency) {
  int i;

  // Hledání intervalu pro interpolaci
  for (i = 0; i < numMeasuredPoints - 1; i++) {
    if (frequency >= measuredFrequencies[i] && frequency < measuredFrequencies[i + 1]) {
      break;
    }
  }

  // Lineární interpolace mezi dvěma měřenými body
  return linearInterpolation(frequency, measuredFrequencies[i], measuredFrequencies[i + 1], measuredAttenuation[i], measuredAttenuation[i + 1]);
}

void setup() {
  // Inicializace sériové komunikace
  Serial.begin(9600);

  // Výpočet útlumu pro vybraný kmitočet (např. 3.5 MHz)
  float frequency = 3.5; // Nahraďte skutečným kmitočtem
  float attenuation = calculateAttenuation(frequency);

  // Výpis vypočteného útlumu
  Serial.print("Frekvence: ");
  Serial.print(frequency);
  Serial.print(" MHz, Utlum: ");
  Serial.print(attenuation);
  Serial.println(" dB");
}

void loop() {
  // Vaše další kódová logika
}



Jestli to bude funkční, tak je šikovnej. Smile

_________________
Jirka

Proč mi nemůže všechno chodit hned ?!!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
asdf



Založen: Oct 06, 2022
Příspěvky: 182

PříspěvekZaslal: ne květen 28 2023, 16:29    Předmět: Citovat

Aha. Ty to nechceš nahradit jednou přímkou, ale lomenou čárou. Tak to jo. Tak to je to moje k ničemu.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Teorie Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.15 sekund