formule opstellen van grafiek

Integraalrekening, afgeleiden, rijen, convergentie & divergentie van reeksen, meervoudige integratie.
Plaats reactie
Compact
Nieuw lid
Nieuw lid
Berichten: 5
Lid geworden op: 09 feb 2008, 23:28

formule opstellen van grafiek

Bericht door Compact » 29 sep 2009, 09:26

Ik heb een projectje van de universiteit waarbij ik een fitler moet maken voor speakers.
Om een lang verhaal kort te maken; ik probeer nu van deze grafieken:
Afbeelding
een formule op te stellen zodat ik dat in mijn programmeercode kan verwerken.
Ik heb alleen geen idee hoe ik dat moet aanpakken, kunnen jullie mij daarbij helpen?

arie
Moderator
Moderator
Berichten: 3911
Lid geworden op: 09 mei 2008, 09:19

Re: formule opstellen van grafiek

Bericht door arie » 30 sep 2009, 10:19

[1] Je kan met hogere graad polynomen de grafieken proberen te benaderen, omdat er 4 toppen per grafiek zijn heb je dan minstens een 5e graads functie nodig.
Nadeel is dat je dan waarschijnlijk toch afwijkingen blijft houden

[2] Je kan een aantal punten bepalen, en tussen die punten lineair of kwadratisch interpoleren.
Dit is een tussenvorm van [1] en [3].

[3] Omdat de grafiek zo klein is kan je hem per pixel scannen en de waarden opslaan in een tabel. Hieronder heb ik dat gedaan. De scanrichting is van onder naar boven, de waardebepaling bij overgang van niet-rood naar rood, dus de onderkant van elke vette rode lijn.
Locatiebepaling horizontaal (x) en vertikaal (y) in pixels van de bitmap:
20 Hz: x = 132
20 kHz: x = 532
130 dB: y = 21
0 dB: y = 454
(NB: in een bitmap loopt y van boven naar beneden).

Code: Selecteer alles

xpix	blauw	rood0	rood20	rood40	rood60	rood80	rood100
132	154	212	154	121	94	59	29
133	156	214	155	123	95	60	30
134	159	216	157	124	96	62	31
135	161	218	159	126	98	63	32
136	163	220	160	128	99	64	33
137	165	222	162	130	100	65	34
138	167	224	164	131	102	66	35
139	169	226	165	133	103	67	36
140	171	228	167	135	104	68	37
141	173	230	169	136	106	70	38
142	176	232	170	138	107	71	39
143	178	234	172	140	108	72	40
144	180	236	174	141	110	73	41
145	182	238	175	143	111	74	42
146	184	240	177	144	112	75	43
147	186	242	179	146	114	76	44
148	188	244	180	147	115	77	45
149	190	246	182	149	116	79	46
150	191	248	184	150	117	80	47
151	193	250	186	152	119	81	48
152	195	251	188	153	120	82	49
153	196	253	189	155	121	83	49
154	197	255	190	156	122	84	50
155	199	257	192	158	124	85	51
156	201	259	194	159	125	86	52
157	203	261	195	161	126	88	53
158	204	263	197	162	127	88	54
159	205	265	199	163	128	90	55
160	207	267	201	165	130	91	56
161	208	269	202	166	131	92	57
162	210	271	204	167	132	93	58
163	211	273	206	169	133	94	59
164	212	274	207	170	134	95	60
165	214	276	209	172	136	96	60
166	215	278	211	173	137	97	61
167	216	280	212	174	138	98	62
168	218	282	214	176	139	99	63
169	219	284	216	177	140	100	64
170	220	286	217	178	141	101	65
171	222	288	219	180	143	102	66
172	223	290	221	181	144	103	67
173	224	292	222	182	145	104	68
174	225	293	224	184	146	105	68
175	227	295	226	185	147	106	69
176	228	297	227	186	148	107	70
177	229	299	228	188	149	108	71
178	231	301	230	189	150	109	72
179	232	302	231	190	152	110	73
180	233	304	233	191	153	111	74
181	235	306	235	193	154	112	74
182	236	308	237	194	155	113	75
183	237	310	239	195	156	114	76
184	239	312	241	196	157	115	77
185	240	313	242	198	158	116	78
186	241	315	243	199	159	117	79
187	242	317	245	200	160	118	80
188	244	319	247	202	161	119	80
189	245	320	248	203	162	120	81
190	246	322	250	204	163	121	82
191	248	324	251	205	164	122	83
192	249	326	253	207	165	123	84
193	250	327	254	208	166	124	84
194	252	329	256	209	167	125	85
195	253	331	258	210	168	125	86
196	254	332	259	212	169	126	87
197	255	334	261	213	170	127	88
198	257	336	263	214	171	128	88
199	258	337	264	215	172	129	89
200	259	339	266	217	173	130	90
201	261	340	267	218	174	130	90
202	262	342	269	219	175	131	91
203	263	343	271	220	176	132	92
204	265	344	272	221	177	133	92
205	266	346	274	223	178	134	93
206	267	347	275	224	179	135	94
207	268	348	277	225	180	135	94
208	270	349	278	226	181	136	95
209	271	351	280	227	182	137	95
210	272	352	281	229	183	138	96
211	274	353	283	230	184	139	96
212	275	355	284	231	185	139	97
213	276	356	286	233	186	140	98
214	277	357	287	234	187	141	98
215	279	358	288	235	187	142	99
216	280	360	290	236	188	142	99
217	281	361	291	238	189	143	100
218	282	363	293	239	190	144	100
219	283	364	294	240	191	145	101
220	284	365	296	242	192	146	101
221	284	367	297	243	193	146	102
222	285	368	298	244	193	147	102
223	286	369	299	245	194	148	102
224	287	370	301	247	195	148	103
225	288	372	302	248	196	149	103
226	288	373	303	249	197	150	104
227	289	374	305	250	198	151	104
228	290	375	306	251	198	151	105
229	291	377	307	252	199	152	105
230	292	378	308	253	200	153	106
231	292	379	310	255	201	154	106
232	293	380	311	256	202	154	106
233	294	381	312	257	202	155	107
234	295	382	313	258	203	156	107
235	295	383	315	259	204	156	108
236	296	385	316	260	205	157	108
237	297	386	317	261	205	158	108
238	298	387	318	262	206	158	109
239	299	388	319	263	207	159	109
240	299	389	320	264	208	160	110
241	300	390	321	265	208	160	110
242	301	391	322	266	209	161	110
243	302	392	323	267	210	161	111
244	303	393	324	268	210	162	111
245	303	394	326	269	211	163	112
246	304	395	327	270	212	163	112
247	305	396	328	270	212	164	112
248	306	397	328	271	213	165	113
249	307	398	329	272	214	165	113
250	307	399	330	273	214	166	113
251	308	400	331	274	215	166	114
252	309	400	332	275	216	167	114
253	310	401	333	276	216	167	114
254	311	402	334	277	217	168	115
255	311	403	335	278	217	169	115
256	312	404	335	279	218	169	115
257	313	405	336	279	219	170	116
258	313	406	337	280	219	170	116
259	314	407	338	281	220	171	116
260	315	407	339	282	220	171	116
261	315	408	339	283	221	172	117
262	316	409	340	283	221	172	117
263	316	410	341	284	222	173	117
264	317	411	342	285	223	173	117
265	318	411	343	286	223	174	118
266	318	412	343	287	224	174	118
267	319	413	344	287	224	174	118
268	319	414	345	288	225	175	118
269	320	414	346	289	225	175	118
270	320	415	347	290	226	176	119
271	320	416	347	290	227	176	119
272	321	417	348	291	227	176	119
273	321	417	349	292	228	177	119
274	322	418	350	293	228	177	119
275	322	419	351	293	229	177	119
276	323	420	351	294	229	178	120
277	323	420	352	295	230	178	120
278	323	421	353	295	230	178	120
279	324	422	354	296	231	179	120
280	324	422	355	297	231	179	120
281	325	423	355	298	232	179	120
282	325	424	356	298	232	179	120
283	325	424	357	299	233	180	120
284	326	425	358	300	233	180	121
285	326	426	358	300	234	180	121
286	327	426	359	301	235	180	121
287	327	427	360	302	235	180	121
288	327	428	361	302	236	181	121
289	328	428	361	303	236	181	121
290	328	429	362	304	237	181	121
291	328	429	363	304	237	181	121
292	328	430	363	305	238	182	121
293	329	431	364	305	238	182	122
294	329	431	364	306	239	182	122
295	329	432	365	306	239	182	122
296	330	432	366	307	240	182	122
297	330	433	366	307	240	183	122
298	330	433	367	308	241	183	122
299	331	434	368	308	241	183	122
300	331	434	368	309	241	183	122
301	331	435	369	309	242	183	122
302	331	435	369	310	242	184	122
303	332	436	370	310	243	184	122
304	332	436	370	311	243	184	122
305	332	436	371	311	244	184	122
306	332	437	371	312	244	184	123
307	332	437	372	312	245	185	123
308	333	438	372	312	245	185	123
309	333	438	373	313	246	185	123
310	333	439	373	313	246	185	123
311	333	439	374	314	246	185	123
312	333	439	374	314	247	185	123
313	333	440	375	314	247	186	123
314	334	440	375	315	248	186	123
315	334	441	376	315	248	186	123
316	334	441	376	315	249	186	123
317	334	441	376	316	249	186	123
318	334	442	377	316	249	186	123
319	334	442	377	316	250	187	123
320	334	442	378	317	250	187	123
321	333	443	378	317	250	187	123
322	333	443	378	317	251	187	123
323	333	443	379	318	251	187	123
324	333	444	379	318	252	187	123
325	333	444	379	318	252	188	123
326	332	444	380	318	252	188	123
327	332	445	380	319	253	188	123
328	332	445	380	319	253	188	123
329	332	445	381	319	253	188	123
330	332	446	381	320	254	188	123
331	331	446	382	320	254	188	123
332	331	446	382	320	254	188	123
333	331	446	382	320	254	189	123
334	330	446	383	320	255	189	123
335	330	447	383	321	255	189	123
336	330	447	383	321	255	189	123
337	329	447	384	321	255	189	123
338	329	447	384	321	256	189	123
339	329	448	384	322	256	189	123
340	328	448	384	322	256	189	123
341	328	448	385	322	256	189	123
342	328	448	385	322	256	189	123
343	327	448	385	322	256	189	123
344	327	448	386	322	256	189	123
345	327	448	386	322	256	189	123
346	326	449	386	322	256	189	123
347	326	449	386	322	256	189	123
348	325	449	386	322	256	189	123
349	325	449	387	322	256	189	123
350	325	449	387	322	256	189	123
351	324	449	387	322	256	189	123
352	324	449	387	322	256	189	123
353	324	449	387	322	256	189	123
354	323	449	387	322	256	188	123
355	323	449	387	322	256	188	123
356	323	449	388	322	256	188	123
357	322	449	388	323	256	188	123
358	322	449	388	323	256	188	123
359	322	449	388	322	256	187	123
360	322	449	388	322	256	187	123
361	322	449	388	321	256	187	123
362	322	448	388	321	256	186	122
363	322	448	388	321	256	186	122
364	322	448	387	321	256	185	122
365	322	448	387	320	255	185	122
366	322	448	387	319	255	184	121
367	322	447	387	319	255	184	121
368	322	447	386	318	254	183	121
369	322	447	386	318	254	183	120
370	322	447	385	318	254	182	120
371	322	446	384	317	253	182	120
372	322	446	384	316	252	181	119
373	322	446	383	316	251	181	119
374	322	446	383	315	250	181	119
375	322	446	382	315	250	180	118
376	322	445	382	314	249	180	118
377	322	445	382	314	248	180	118
378	322	445	382	313	248	180	118
379	323	446	382	313	247	180	117
380	323	446	382	313	247	180	117
381	323	446	382	313	247	180	117
382	323	446	382	313	246	180	117
383	323	447	382	313	246	180	117
384	324	447	383	313	247	180	116
385	324	448	383	313	247	180	116
386	324	448	384	314	247	181	116
387	324	449	384	314	247	181	116
388	325	450	385	315	248	181	116
389	325	451	385	316	248	181	117
390	326	452	386	317	249	182	117
391	326	453	387	317	250	182	118
392	326	454	387	318	250	183	118
393	327	455	388	319	251	183	119
394	327	457	389	320	252	184	119
395	328	458	390	321	253	184	120
396	328	459	390	322	254	185	120
397	329	460	391	323	255	186	121
398	329	461	392	324	257	187	121
399	330	462	393	325	258	188	122
400	331	463	394	326	258	188	122
401	332	464	395	326	259	189	123
402	333	465	396	327	260	189	123
403	334	466	397	328	260	190	124
404	335	467	398	329	261	190	124
405	336	468	398	329	261	191	125
406	337	469	399	330	262	191	125
407	337	469	400	330	262	191	126
408	338	470	400	331	263	192	126
409	339	470	401	331	263	192	127
410	339	471	402	332	264	193	127
411	340	472	402	332	264	193	128
412	341	472	403	333	264	193	128
413	341	473	403	333	265	194	129
414	342	473	404	334	265	194	129
415	342	474	404	334	265	194	130
416	343	474	405	334	266	195	130
417	343	474	405	335	266	195	131
418	344	474	405	335	266	195	131
419	344	474	406	335	266	195	131
420	345	474	406	336	267	195	131
421	345	474	406	336	267	196	132
422	346	474	406	336	267	196	132
423	346	474	407	337	267	196	132
424	347	474	407	337	267	196	132
425	347	474	407	337	267	196	132
426	347	474	407	337	267	196	132
427	348	474	407	337	267	197	132
428	348	474	407	338	267	197	131
429	348	474	407	338	267	197	131
430	349	474	407	338	267	197	131
431	349	474	407	338	267	197	131
432	349	474	407	338	266	196	131
433	349	474	407	338	266	196	130
434	349	474	407	338	266	196	130
435	349	474	407	337	265	195	129
436	349	474	407	337	265	195	129
437	349	474	407	336	264	194	128
438	349	473	406	335	264	194	128
439	349	473	406	335	263	193	128
440	349	472	406	334	262	192	127
441	349	472	405	333	262	191	127
442	348	471	405	332	261	190	126
443	348	470	404	332	260	190	126
444	348	469	404	331	259	189	125
445	347	468	403	330	258	188	125
446	347	466	402	329	257	187	124
447	346	465	401	328	256	186	123
448	346	464	401	326	255	185	123
449	345	463	400	325	254	184	122
450	345	462	399	324	252	183	121
451	344	460	398	323	251	182	120
452	343	459	397	322	250	180	119
453	342	458	396	321	249	179	118
454	341	456	395	319	247	178	117
455	340	455	393	318	246	177	116
456	339	453	392	316	244	176	115
457	338	452	391	315	243	175	114
458	336	450	389	314	242	173	112
459	335	449	388	312	240	172	111
460	334	447	387	311	239	171	110
461	332	446	385	310	238	169	109
462	331	444	383	308	236	168	107
463	330	442	382	307	235	167	106
464	329	441	380	305	234	165	105
465	327	439	378	304	232	164	104
466	326	437	376	302	231	162	102
467	325	436	374	300	230	161	100
468	323	434	372	299	228	160	99
469	322	433	370	297	227	159	98
470	321	431	368	296	226	158	96
471	319	430	366	294	225	157	95
472	318	429	364	293	223	156	94
473	316	427	362	291	222	155	92
474	315	426	360	290	221	154	91
475	314	424	358	288	220	153	89
476	312	423	357	287	219	152	88
477	311	422	355	286	217	151	87
478	309	421	353	285	216	150	85
479	308	419	352	283	215	149	84
480	307	418	351	282	214	149	83
481	305	417	349	281	214	148	81
482	304	416	348	280	213	147	79
483	303	415	347	279	212	147	78
484	301	414	345	278	212	146	77
485	300	413	344	277	211	146	76
486	299	412	343	276	211	146	75
487	298	411	342	275	211	145	75
488	297	410	341	274	210	145	74
489	296	410	341	273	210	145	74
490	295	409	340	273	210	145	73
491	294	409	339	272	210	145	73
492	293	408	339	272	210	145	73
493	293	408	338	272	210	145	73
494	293	407	338	271	210	146	73
495	293	407	337	271	210	146	73
496	293	407	337	271	210	146	74
497	294	406	337	271	210	147	75
498	294	406	337	271	210	148	75
499	295	406	337	271	211	148	76
500	296	406	337	271	211	149	77
501	297	406	337	272	212	150	79
502	298	407	337	272	212	151	80
503	299	407	337	272	213	152	81
504	300	407	338	273	214	154	83
505	302	407	338	273	214	155	84
506	303	408	339	274	215	156	86
507	305	408	339	274	216	158	87
508	306	408	340	275	217	159	88
509	308	409	340	275	218	161	90
510	309	409	341	276	219	163	91
511	311	409	341	277	220	165	91
512	313	410	342	278	221	167	92
513	315	411	343	278	223	168	92
514	317	411	344	278	224	169	93
515	319	411	344	277	223	169	93
516	320	410	344	277	223	170	93
Als je deze tabel nu vanuit je programma inleest, kan je een functie schrijven die voor gegeven frequentie en gegeven luidheid (phon) de Sound Pressure Level oplevert.
Hieronder een zeer basale versie in C, maar ik denk dat je dit wel kunt aanpassen en vertalen naar de programmeertaal die jij gebruikt (commentaar staat achter de // tekens):


Inlezen tabel:

Code: Selecteer alles

int loudnesstable[385][8];

//lees tabel:
void loadloudnesstable(void)
{
FILE *fi;
int i,j;
char str[32];

fi=fopen("loudnesstable.txt","rt");
//lees eerste rij (=table header):
for(j=0;j<8;j++)
	fscanf(fi,"%s",str);
//lees waarden:
for(i=0;i<385;i++)
	for(j=0;j<8;j++)
		fscanf(fi,"%d",&loudnesstable[i][j]);
fclose(fi);
}

Raadplegen tabel:

Code: Selecteer alles

//get Sound Pressure Level
//input:
//freq=frequentie: 20Hz - 15kHz
//phon=kolom in tabel: 1=blauwe lijn, 2=rood_0, 3=rood_20, etc
//output:
//sound pressure level in dB:
double getSPL(double freq, int phon)
{
double x, spl, y;
int tx;

x=400.0*(log(freq)-log(20))/(log(20000)-log(20));
tx=(int)(x+0.5); //rond x-waarde af
if(tx<0) tx=0; //zorg dat tx een geldige index is
if(tx>384) tx=384;
y=loudnesstable[tx][phon];
spl=130.0*(454.0-y)/(454.0-21.0);
return(spl);
}

Compact
Nieuw lid
Nieuw lid
Berichten: 5
Lid geworden op: 09 feb 2008, 23:28

Re: formule opstellen van grafiek

Bericht door Compact » 30 sep 2009, 22:24

Dank u zeer, ik zal kijken of ik daar iets mee kan. Het is mij in ieder geval om dat in een matrix te stoppen in matlab. :)

Plaats reactie